[英]Python - TypeError: expected a character buffer object
我正在嘗試寫入以下數據:
playlist = {'playlist': {u'Up in Flames': 0, u'Oceans': 0, u'No Surprises': 0}}
到這樣的文件:
with open('playlist.txt', 'a') as f:
f.write(playlist)
但看起來像將integers
寫入文件生成器此錯誤:
TypeError: expected a character buffer object
我該如何糾正? 我的數據結構是否有更好的文件格式?
您正在嘗試將字典對象寫入文本文件,該函數希望在其中寫入一些字符。 如果希望對象以可讀的文本格式存儲,則需要某種方式來構造數據,例如JSON。
import json
with open('playlist.json', 'w') as f:
json.dump(playlist, f)
還有其他選項,例如xml甚至csv。 如果您不關心數據是純文本可讀格式的,也可以考慮對字典對象進行腌制 。
如評論中所述,您的問題將數據附加到文件中,而不是寫入新文件。 這是JSON的問題,因為在附加JSON時層次結構也不起作用。 如果您需要添加到現有文件中,則可能需要為存儲的文本提供不同的結構,讀取退出的文件,將其與新數據合並並重寫(Jack Hughes回答)...或者您可以編寫一些代碼來解析附加的JSON,但是我想這不是標准的重點。
playlist = {'playlist': {u'Up in Flames': 0, u'Oceans': 0, u'No Surprises': 0}}
with open('playlist.txt', 'a') as f:
f.write(str(playlist))
或者您可以使用json模塊:
with open('playlist.txt', 'w') as f:
json.dump(playlist, f)
嘗試這個:
import json
playlist = {'playlist': {u'Up in Flames': 0, u'Oceans': 0, u'No Surprises': 0}}
with open('playlist.txt', 'a') as f:
json.dump(playlist, f)
它可能會起作用; 但是,這可能會引發有關無法寫入文件的錯誤。 在這種情況下,您將不得不在open
語句中更改a
參數,並且不能僅追加寫入文件。 以下是嘗試解決該問題的方法:
import json
playlist = {'playlist': {u'Up in Flames': 0, u'Oceans': 0, u'No Surprises': 0}}
with open('playlist.txt', 'r+') as f:
playlist = playlist + json.dumps(f)
json.dump(f, playlist)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.