Python使用Path.read_text()读取文件报charmap解码错误如何解决
核心错误原因
你把encoding参数传错位置了。Path构造函数本身不接收encoding参数,你写在Path('myfile.txt', encoding='utf-8')里的encoding参数会被Python直接忽略,完全不会生效。后续调用read_text()时没有传入编码参数,就会自动使用系统默认编码(从报错看你当前环境默认是cp1252)读取文件,自然触发Unicode解码错误,这也是你看了很多加编码的方案却没解决问题的核心原因。
正确写法
把encoding参数移到read_text()方法的参数列表中即可:
from pathlib import Path paragraph = Path('myfile.txt').read_text(encoding='utf-8')
补充排查方案
如果改完参数位置仍然报错,可以按以下顺序排查:
- 先确认
myfile.txt的实际存储编码确实是UTF-8,不是GBK、GB2312、Latin1等其他编码,可以直接用系统自带记事本打开文件,查看窗口右下角标注的编码格式,替换成对应编码参数即可 - 如果文件中存在少量无法识别的异常字符、不需要严格100%还原内容,可以添加
errors参数跳过异常,比如read_text(encoding='utf-8', errors='replace')会把无法解码的字符替换为特殊占位符,不会直接中断程序抛出错误 - 确认传入的文件路径正确,避免程序读取到其他目录下的同名非目标文件
内容的提问来源于stack exchange,提问作者user4807488
相关产品推荐
相关产品推荐

