以下代码导致我出现问题:
with open(fname, 'wb') as f:
for p, values in params:
s = str.encode("%s" % p)
print("the type is:", type(s))
print(s)
print(s, file=f)
输出结果为:
the type is: <class 'bytes'>
b'myfancystring'
...
TypeError: a bytes-like object is required, not 'str'
因此它是&#39;字节&#39;类型的对象。仍然给我这个错误?我很困惑。
非常感谢。
问候, Pfaeff
答案 0 :(得分:2)
print始终将其输入格式化为字符串,然后将其传递给文件对象的write()方法,无论该文件对象是stdout(默认值)还是指定的文件对象。这就是为什么print(3)没有给你一个像#34;字符串预期但得到int&#34;的错误,为此就是为什么打印那个字节串到控制台没有给你类似于#34;字符串的错误,但得到字节&#34;
直接使用文件对象的write()方法:
f.write(b)