在 Python 3.5 中读取在 Python 2.7 中生成的文件

Posted

技术标签:

【中文标题】在 Python 3.5 中读取在 Python 2.7 中生成的文件【英文标题】:Reading files in Python 3.5 which have been generated in Python 2.7 【发布时间】:2019-08-26 14:08:30 【问题描述】:

我在 Python 2.7 中运行了一些脚本,生成了一个文件,当我尝试打开它时,发现以下错误:

UnicodeDecodeError:“ascii”编解码器无法解码位置 2623 中的字节 0xc0:序数不在范围内 (128)

任何关于如何在 Python 3.5 中打开它的线索?

【问题讨论】:

打开文件时使用正确的编码。 UTF8 是一个很好的初步猜测。 如果您在此处发布您用于生成该错误的代码,以便我们准确查看问题所在,这将有所帮助。 【参考方案1】:

您的文件位于utf-8(可能)。 ASCII 编解码器无法解码 unicode 文本。

您应该使用正确的编解码器。 file.read() 函数返回一个类似字节的对象。你可以像这样把它变成一个字符串:

contents = str(file.read(), 'utf-8')

【讨论】:

或者你可以在打开文件时指定编码【参考方案2】:

打开文件时可以指定编码:

 with open(myfile, encoding='utf-8) as f:
     pass

【讨论】:

以上是关于在 Python 3.5 中读取在 Python 2.7 中生成的文件的主要内容,如果未能解决你的问题,请参考以下文章

Python 3.5文件操作

使用 python 3.5 从静态 HTML 文件中提取数据

python 3.5: TypeError: a bytes-like object is required, not 'str'

Python 3.5 与 2.7 之间字​​符串连接的巨大时间差异

可以在python 3.6中安装python 3.5包吗?

在 Python 3.5 中使用 aiohttp 获取多个 url