You need to enable JavaScript to run this app. Python读取文件名列表时打印正常但存列表/文件出现编码不可读问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python读取文件名列表时打印正常但存列表/文件出现编码不可读问题咨询

问题修复方案

常见异常原因

  • 打开files.txt时未显式指定编码:Windows环境下Python默认用本地GBK编码读取文件,若files.txt是UTF-8(带BOM头也属于该类)格式,会出现解码不匹配问题。部分字符直接print时终端容错显示正常,但存入列表、写入文件时就会呈现乱码。
  • 读取的每行默认携带末尾换行符\n:切片后未清理的话,存入列表的元素会隐含换行符,print整个列表时会显示转义字符,外观类似编码异常。
  • 硬编码切片索引101未做边界判断:如果行长度不足101,或者编码不匹配导致索引切到无效字符位置,会生成乱码内容。

修正后的代码

docs = []
# 按files.txt实际编码替换encoding值,带BOM的UTF-8用utf-8-sig
with open('files.txt', 'r', encoding='utf-8') as f:
    content = f.readlines()
    for doc in content:
        if '-' in doc:
            # 先去除行末尾自带的换行符,不删除内容首尾的有效空格
            cleaned_line = doc.rstrip('\n')
            # 增加长度判断,避免索引越界切出无效字符
            if len(cleaned_line) > 101:
                target_content = cleaned_line[101:]
                print(target_content)
                docs.append(target_content)

print(docs)

输出文件注意事项

如果需要将docs写入新文件,必须同步指定编码,避免输出乱码:

with open('output.txt', 'w', encoding='utf-8') as f:
    for name in docs:
        f.write(f"{name}\n")

编码适配规则

  • 若files.txt是GBK编码保存,将open中的encoding='utf-8'替换为encoding='gbk'
  • 不确定文件编码时,用记事本打开files.txt,另存为界面底部可查看当前编码,填入对应值即可

内容的提问来源于stack exchange,提问作者Chandan Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 18:45:03