TypeError:write()参数必须是str,而不是字节(Python 3 vs Python 2)

时间:2017-10-31 03:06:09

标签: python python-2.7 python-3.x

以下代码适用于python 2.7.13

import os
with open('random.bin','w') as f:
    f.write(os.urandom(10))

但是python 3会抛出错误 3.6.0 | Anaconda 4.3.0(64位)| (默认,2016年12月23日,11:57:41)[MSC v.1900 64 bit(AMD64)]

  

Traceback(最近一次调用最后一次):文件   " C:/Users/hsingh/Py​​charmProjects/Item3.py" ;,第3行,在          f.write(os.urandom(10))TypeError:write()参数必须是str,而不是bytes

行为存在差异或如何解决此问题的原因

1 个答案:

答案 0 :(得分:15)

在Python 3中,无论是以二进制还是文本模式打开文件,都会有所不同。只需添加b标志即可使其成为二进制文件:

with open('random.bin','wb') as f:

这也适用于Python 2。