VS Code中Python读取文本文件遇UnicodeDecodeError问题求助
问题分析与解决
错误含义
UnicodeDecodeError 是因为Python默认使用系统的charmap编码(Windows下通常为GBK)读取文件,但你的0_intro.txt实际采用的编码(比如UTF-8)中存在charmap无法识别的字节(0x9d),导致二进制字节转字符串时解码失败。
另外你的代码还有一处错误:intro_text.close 是无效操作,intro_text是readlines()返回的列表对象,没有close方法,应该调用文件对象intro_doc.close(),且必须加括号执行方法。
解决方案
1. 指定正确编码打开文件
直接在open函数中指定文件实际的编码(最常见的是UTF-8):
intro_doc = open("0_intro.txt", "r", encoding="utf-8") intro_text = intro_doc.readlines() print(intro_text) intro_doc.close() # 调用文件对象的close方法,注意加括号
2. 推荐使用with语句(自动管理文件资源)
with语句会在代码块结束后自动关闭文件,避免手动关闭的遗漏或错误:
with open("0_intro.txt", "r", encoding="utf-8") as intro_doc: intro_text = intro_doc.readlines() print(intro_text) # 无需手动调用close,with块结束后文件自动关闭
3. 检测文件实际编码(不确定编码时)
如果不知道文件用的是什么编码,可以用chardet库检测:
- 先安装chardet:
pip install chardet
- 编写检测代码:
import chardet with open("0_intro.txt", "rb") as f: detect_result = chardet.detect(f.read()) print("文件编码为:", detect_result['encoding'])
得到编码后,用该编码替换上述代码中的encoding="utf-8"即可。
内容的提问来源于stack exchange,提问作者Matt D
相关产品推荐
相关产品推荐

