VS Code中Python读取同目录文本文件时触发UnicodeDecodeError错误的解决方案求助
解决Python读取文本文件时的UnicodeDecodeError问题
这个问题我之前踩过一模一样的坑!咱们一步步把它捋清楚:
错误原因
你碰到的UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d...,核心原因是文件的实际编码和Python默认使用的解码编码不匹配。
在Windows系统里,Python默认会用系统自带的charmap编码(比如GBK这类)去读取文本文件,但你的0_intro.txt大概率是用UTF-8编码保存的,文件里存在charmap编码无法识别的特殊字符(就是报错里的0x9d字节),自然就解码失败了。
另外还要揪出你代码里的小错误:intro_text.close是完全不对的——close()是文件对象的方法,你应该调用intro_doc.close()(注意要加括号,而且是操作打开的文件对象intro_doc,不是读取后的文本变量intro_text)。
解决方法
方法1:指定编码读取
打开文件时直接加上encoding="utf-8"参数,强制用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语句会自动帮你处理文件的打开和关闭,不用手动调用close(),还能避免异常情况下文件没关闭的问题,写法更简洁安全:
with open("0_intro.txt", "r", encoding="utf-8") as intro_doc: intro_text = intro_doc.readlines() print(intro_text) # 代码块结束后,文件会自动关闭,不用额外操作
如果UTF-8还是报错,你可以试试encoding="utf-8-sig"(用来处理带BOM的UTF-8文件),或者打开VS Code看一下文件右下角显示的编码(点击可以切换),然后用对应的编码参数就行。
内容的提问来源于stack exchange,提问作者Matt D
相关产品推荐
相关产品推荐

