以下代码适用于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/PycharmProjects/Item3.py" ;,第3行,在 f.write(os.urandom(10))TypeError:write()参数必须是str,而不是bytes
行为存在差异或如何解决此问题的原因
答案 0 :(得分:15)
在Python 3中,无论是以二进制还是文本模式打开文件,都会有所不同。只需添加b
标志即可使其成为二进制文件:
with open('random.bin','wb') as f:
这也适用于Python 2。