以下代码不起作用:
with open("testfile.txt",'w') as fw:
for key in a:
fw.write(a[key])
以下是错误:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: expected a character buffer object`
以下代码有效:
with open('myfile.txt', 'w') as f:
for key, value in a.items():
f.write('%s:%s\n' % (key, value))
有人可以帮我理解第一个街区出了什么问题吗?
答案 0 :(得分:0)
正如错误消息所示:您只能将字符缓冲区对象写入文件。例如string
。但是,字典中的条目是int
s - 它们不是字符缓冲区对象。因此,您首先要将值转换为字符串,然后将其写入文件,例如,可以通过'%d\n' % a[key]
或'{0]\n'.format(a[key])
进行此转换。
你实际上可以使用'%s\n' % a[key]
,即使字典中的元素不是整数,它也会起作用。 python中的%s
表示转换是使用str()
函数完成的,这与C中的用法不同,因为在C %s
中表示形成了以空字符结尾的字符串。您可以在第二个程序中观察到这一点以及我首先认为词典中的元素为string
的原因。