Python - TypeError: expected a character buffer object
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
我该如何纠正这个问题?我的数据结构有更好的文件格式吗?
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)
您正在尝试将字典对象写入文本文件,因为该函数需要写入一些字符。如果您希望您的对象以您可以阅读的文本格式存储,您需要某种方式来构建您的数据,例如 JSON.
import json
with open('playlist.json', 'w') as f:
json.dump(playlist, f)
还有其他选项,例如 xml 甚至 csv。如果您不关心您的数据是纯文本可读格式,您还可以查看 pickling 字典对象。
如评论中所述,您的问题将数据附加到文件,而不是写入新文件。这是 JSON 的问题,因为层次结构在附加时也不起作用。如果您需要添加到现有文件中,您可能需要为存储的文本提出不同的结构,读取现有文件,将其与新数据组合并重写(杰克休斯回答)......或者你可以写附加了一些解析代码 JSON,但我想这不是标准的重点。
试试这个:
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)
我正在尝试写入此数据:
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
我该如何纠正这个问题?我的数据结构有更好的文件格式吗?
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)
您正在尝试将字典对象写入文本文件,因为该函数需要写入一些字符。如果您希望您的对象以您可以阅读的文本格式存储,您需要某种方式来构建您的数据,例如 JSON.
import json
with open('playlist.json', 'w') as f:
json.dump(playlist, f)
还有其他选项,例如 xml 甚至 csv。如果您不关心您的数据是纯文本可读格式,您还可以查看 pickling 字典对象。
如评论中所述,您的问题将数据附加到文件,而不是写入新文件。这是 JSON 的问题,因为层次结构在附加时也不起作用。如果您需要添加到现有文件中,您可能需要为存储的文本提出不同的结构,读取现有文件,将其与新数据组合并重写(杰克休斯回答)......或者你可以写附加了一些解析代码 JSON,但我想这不是标准的重点。
试试这个:
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)