Python,使用“open('file_name.txt','r')”读取打开文件中的行时出现问题

Python,使用“open('file_name.txt','r')”读取打开文件中的行时出现问题

我正在尝试使用以下代码逐行读取文本文件的内容:

import os.path  

file_to_read = open("file_name.txt", "r")  
lines = file_to_read.readlines()

当我运行它时出现以下错误:

在此处输入图片描述

回溯(最近一次调用最后一次):
文件“D:/Files/test.py”,第 4 行,在 <module> 中
lines = file_to_read.readlines()
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\encodings\cp1252.py”,第 23 行,在解码中返回 codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError:'charmap'编解码器无法解码位置 260 中的字节 0x9d:字符映射到 <undefined>

如果我删除最后一行,那么代码如下所示:

import os.path  

file_to_read = open("file_name.txt", "r")  

这样我就没有收到任何错误。

在此处输入图片描述

这让我想到了一个问题lines = file_to_read.readlines(),但我看不出有什么问题。

答案1

没有什么问题lines = file_to_read.readlines(),但是这行实际上读取了文件的内容。open()只是打开它,并不继续读取它。

就像错误告诉你的那样,python 不知道如何解码byte 0x9d in position 260。检查文件编码并确保文件未损坏。

这个答案也可能对你有帮助(即明确指定 utf-8 编码或文件使用的任何编码)。本质上,

with open("file_name.txt", "r", encoding="utf-8") as file_to_read:
    ...

答案2

这个问题与主题无关。您在 Windows 中运行并询问有关 Python 的问题,但此网站是针对有关 Ubuntu 的问题。

话虽如此,请检查文本文件和错误中给出的位置是否存在不属于 utf-8 的特殊字符。例如,版权符号。

相关内容