TypeError:write()参数必须是str,而不是bytes(Python 3与Python 2)

TypeError:write()参数必须是str,而不是bytes(Python 3与Python 2),python,python-2.7,python-3.x,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)) 但是对Python3抛出错误 3.6.0 | Anaconda 4.3.0(64位)|(默认值,2016年12月23日,11:57:41)[MSC v.1900 64位(AMD64)] 回溯(最近一次调用上次):文件 “C:/Users/hsingh/PycharmProjects/Item3.py”,第3行

下面的代码适用于python 2.7.13

import os
with open('random.bin','w') as f:
    f.write(os.urandom(10))
但是对Python3抛出错误 3.6.0 | Anaconda 4.3.0(64位)|(默认值,2016年12月23日,11:57:41)[MSC v.1900 64位(AMD64)]

回溯(最近一次调用上次):文件 “C:/Users/hsingh/PycharmProjects/Item3.py”,第3行,在 f、 write(os.uradom(10))类型错误:write()参数必须是str,而不是bytes


在Python3中,行为上存在差异的任何原因,或者如何解决这一问题,无论您是以二进制模式还是文本模式打开文件,都会产生差异。只需添加
b
标志,使其成为二进制:

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

这也适用于Python 2。

f.write(str(os.uradom(10))
适用于me@JacobIRR您使用的是哪一版本的python?
>sys.version“3.6.1…”
我在联机编译器中遇到的相同错误我相信您可以通过谷歌搜索“python将字节写入文件”找到很多方法来修复此问题