TypeError:必须是str,而不是bytes错误

时间:2015-05-22 11:12:45

标签: python

在我的python代码中,执行此行时出现此错误。

fo.write(text.replace("'","").encode("utf8"));

错误:

TypeError: must be str, not bytes

使用python 2.7工作正常但是3,它给出了错误。

1 个答案:

答案 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()完全相同。