在我的python代码中,执行此行时出现此错误。
fo.write(text.replace("'","").encode("utf8"));
错误:
TypeError: must be str, not bytes
使用python 2.7工作正常但是3,它给出了错误。
答案 0 :(得分:6)
在Python 3中,以文本模式打开的文件对象要求您编写 Unicode文本。
您将文本编码为UTF-8字节,但文件对象负责进行编码。不要对文本进行编码。
使用io.open()
function而不是内置的open()
函数,您可以在Python 2中获得相同的行为。 Python 2中的io
模块是Python 3中使用的新I / O基础结构的后端。
如果您需要编写多语言代码(Python代码同时适用于Python 2和Python 3),只需从io
导入:
import io
with io.open(filename, 'w', encoding='utf8') as fo:
fo.write(text.replace("'",""))
Python 3内置open()
函数与io.open()
完全相同。