콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
1 회신
12057 화면

I needed to update the __openerp__.py file automatically, so I wrote the following code

import json as json 
with open('__openerp__.py','r+') as fl:     var = eval(fl.read())     var['data'].append('some_xml_file.xml')     fl.seek(0,0)     fl.truncate()     output = json.dumps(var, indent=4)     fl.write(output)

The problem with this code is that the json.dumps method outputs the key 

{...,
'installable': True,
...}


to 

{...,
"installable": true,
...}


So when the __openerp__.py file is being read again it will gives the error: 

NameError: name 'false' is not defined

I've written the following line to mend this problem

    ...
    output = output.replace(': false',': False').replace(': true',': True')
    fl.write(output)

My question is, How to update the __openerp__.py file correctly, i.e. as a python dictionary,  without appealing to this replace line of code


아바타
취소
베스트 답변

Json dumps will bind the data and sends the result.

If it again needs to read, then you need to use Json Loads [json.loads() ] to unbind data created by dumps.


아바타
취소
작성자

I know that I didn't use json.dumps the standard way, but I did this as I needed to update the __openerp__.py and save it formatted.

If I replaced the 7th line with

output = str(var)

it will save it as a dictionary in one line.

So if you can help me in this request your help will be appreciated

관련 게시물 답글 화면 활동
0
1월 21
12647
2
12월 19
8997
2
5월 15
6781
0
3월 15
5113
4
3월 25
40785