您可以閱讀,分析和每次需要新的數據添加到它時修改的文件,這將是這樣的:
import json
def append(filename, obj):
with open(filename, 'rb') as f:
data = json.load(f, encoding='utf-8')
data.append(obj)
with open(filename, 'wb') as f:
json.dump(data, f, encoding='utf-8')
但是,這可能是非常慢,特別是如果你有一個大文件,因爲你必須每次讀取整個文件到內存中,反序列化它,追加,再次序列化,並寫下來...
如果你需要額外的速度,你可以通過追加來做一點小事新數據文件:
import io
import json
def append(filename, data):
with open(filename, 'r+b') as f:
f.seek(-2, 2)
f.write(b',\n')
f.write(b' ' + json.dumps(data).encode('utf-8'))
f.write(b'\n]')
此代碼將打開該文件,最後\n]
前移動,追加,\n
,自卸車新的數據,並添加最終\n]
。你只需要小心,不要在文件末尾添加換行符,因爲這會弄亂一些東西。但是如果你需要在最後有一個換行符,那麼你只需要移動到-3
,並在最後寫入附加b'\n]\n'
。
注:此代碼假定您使用UNIX行結束,對於Windows行尾你就必須改變移動和\n
。
例IPython的會議:
In [29]: %%file test.json
CPU = [
{"TS": "2013:12:03:30", "CPUVALUES": ["0", "1", "15"]},
{"TS": "2013:14:00:30", "CPUVALUES": ["0", "75", "15"]}
]
In [30]: !cat test.json
CPU = [
{"TS": "2013:12:03:30", "CPUVALUES": ["0", "1", "15"]},
{"TS": "2013:14:00:30", "CPUVALUES": ["0", "75", "15"]}
]
In [31]: append('test.json', {'TS':'2013:14:00:30','CPUVALUES':['0','80','15']})
In [32]: !cat test.json
CPU = [
{"TS": "2013:12:03:30", "CPUVALUES": ["0", "1", "15"]},
{"TS": "2013:14:00:30", "CPUVALUES": ["0", "75", "15"]},
{"TS": "2013:14:00:30", "CPUVALUES": ["0", "80", "15"]}
]
只是問如何將項目添加到Python中的列表?或者還有別的嗎? –
讀取,解析,修改,寫入。 –