Python3 - &#34;需要一个类似字节的对象,而不是&#39; str&#39;&#34;对于<class'bytes'=“”>类型的对象

时间:2018-03-21 16:48:11

标签: string python-3.x io

以下代码导致我出现问题:

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

1 个答案:

答案 0 :(得分:2)

print始终将其输入格式化为字符串,然后将其传递给文件对象的write()方法,无论该文件对象是stdout(默认值)还是指定的文件对象。这就是为什么print(3)没有给你一个像#34;字符串预期但得到int&#34;的错误,为此就是为什么打印那个字节串到控制台没有给你类似于#34;字符串的错误,但得到字节&#34;

直接使用文件对象的write()方法:

f.write(b)