簡體   English   中英

Python-TypeError:應使用字符緩沖區對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM