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

Har*_*ava 2 python

在我的python代码中,我在执行此行时遇到此错误.

fo.write(text.replace("'","").encode("utf8"));
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: must be str, not bytes
Run Code Online (Sandbox Code Playgroud)

它与python 2.7一起工作正常,但是3,它给出了错误.

Mar*_*ers 6

在Python 3中,以文本模式打开的文件对象要求您编写Unicode文本.

您将文本编码为UTF-8字节,但文件对象负责进行编码.不要对文本进行编码.

通过使用io.open()函数而不是内置函数,您可以在Python 2中获得相同的行为open().ioPython 2中的模块是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("'",""))
Run Code Online (Sandbox Code Playgroud)

Python 3内置open()函数与函数完全相同io.open().