You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python运行报charmap编码错误,指定UTF-8读取文件仍无法解决怎么办?

问题根因

报错指向写入masterFile时的编码失败:Windows平台下Python调用open时如果不指定编码参数,会默认使用操作系统的区域编码(你的环境里是cp1252),而你读取的源文件是UTF-8编码,里面包含cp1252字符集不支持的字符,写入时就会触发编码错误。你之前只给读取源文件的open加了UTF-8编码参数,没有给输出文件的open加,所以问题没有解决。

修复方案
  • 所有文件IO操作(包括读取源文件、写入两个结果文件)都统一指定encoding="utf-8"参数
  • 修正glob路径前缀多余的#字符,避免匹配不到目标文件
  • 可选给写入操作增加errors="replace"参数,遇到极端无法编码的字符时自动替换为占位符,避免程序中途崩溃
修正后完整代码
import glob

searchWord = "Hello"
# 用with上下文管理器统一管理所有文件句柄,自动完成文件关闭操作
with open("C:/Users/Anthony/Documents/TextDataFolder/TextData.txt", 'w', encoding="utf-8") as dataFile, \
     open("C:/Users/Anthony/Documents/TextDataFolder/masterFile.txt", 'w', encoding="utf-8") as masterFile:

    # 去掉路径前多余的#号
    files = glob.iglob("C:/Users/Anthony/Documents/Texts/*.txt", recursive = True)
    for file in files:
        # 读取源文件指定UTF-8编码
        with open(file, encoding="utf-8") as f:  
            print(file)
            for index, line in enumerate(f):
                 masterFile.write("Line {}: {}\n".format(index, line.strip()))
                 if searchWord in line:
                    print("Line {}: {}".format(index, line.strip()))
                    dataFile.write("Line {}: {}\n".format(index, line.strip()))

内容的提问来源于stack exchange,提问作者Anthony Jimenez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:24:05