Python3读取14.6GB .lst文件遇编码错误,求适配编码方案
解决UnicodeDecodeError:如何确定.lst文件的正确编码
这个解码错误太常见了——尤其是处理大文件或者非标准UTF-8编码的文本文件时。咱们一步步来搞定它:
先试万能兼容编码:
latin-1latin-1(即ISO-8859-1)的特点是能映射所有字节,不会抛出解码错误,哪怕文件里有奇怪的字符。你可以先改用这个编码打开文件,看看内容的大致样子,判断是否符合预期:with open('your_file.lst', 'r', encoding='latin-1') as file: passw = file.readline().strip()如果打开后内容能看懂,那
latin-1可能就是合适的;如果是乱码,再往下尝试其他方法。用编码检测工具精准判断
可以用chardet或者更快的cchardet库自动检测文件编码(因为文件很大,别读整个文件,取前几KB就行,节省资源):
先安装库:pip install chardet然后运行检测代码:
import chardet with open('your_file.lst', 'rb') as f: # 读取前10KB数据用于检测,足够判断编码了 raw_data = f.read(1024 * 10) detection_result = chardet.detect(raw_data) print(f"检测到的编码:{detection_result['encoding']},置信度:{detection_result['confidence']}")把输出的编码替换到你的
open语句里,大概率就能解决问题。尝试常见的区域编码
如果检测工具没给出明确结果,试试这些常见编码:- Windows系统下的文件:
cp1252(西欧语言)、gbk/gb2312(中文) - DOS/旧系统文件:
cp850 - 欧洲其他语言:
iso-8859-2(东欧)、iso-8859-5(西里尔文)
- Windows系统下的文件:
最后确认:文件是不是文本文件?
要是以上方法都不行,得怀疑这个.lst文件是不是其实是二进制文件——如果是,你应该用rb模式打开(二进制模式),而不是文本模式。不过看你用readline(),大概率还是文本文件,但可以先验证下。
内容的提问来源于stack exchange,提问作者anonym
相关产品推荐
相关产品推荐

