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

如何移除文件名中的BOM字符以解决文件找不到错误?

解决文件名中BOM字符导致的FileNotFoundError问题

首先得明确:你遇到的问题是文件名本身包含BOM字符,而非文件内容里有BOM——这也是为什么设置encoding='utf-8-sig'没用的原因,这个参数是用来处理文件内容编码的,和文件名无关;而手动切片filename[:-11]+"3.txt"没生效,大概率是因为你没精准定位到BOM字符的位置(BOM是单个Unicode字符\ufeff,不是一串可见字符)。

下面给你几个可行的解决方案:

方案1:精准移除BOM字符

先确认文件名里的BOM位置,你可以先打印文件名的原始表示,看看隐藏字符:

filename = r"C:\Users\Jonis\Desktop\New folder\vardai tikri\becach_besmile_vardai_failas_3.txt"
print(repr(filename))  # 输出会显示类似末尾带有'\ufeff'的内容

确认后,直接替换掉BOM字符即可:

# 清理文件名中的BOM
clean_filename = filename.replace('\ufeff', '')

# 用清理后的文件名打开文件
with open(clean_filename, mode="r", encoding="utf-8") as file:
    for line in file:
        print(line)

方案2:过滤所有不可见控制字符

如果不确定文件名里还有其他隐藏控制字符,可以用unicodedata模块过滤掉所有控制类字符(BOM属于控制字符范畴):

import unicodedata

filename = r"C:\Users\Jonis\Desktop\New folder\vardai tikri\becach_besmile_vardai_failas_3.txt"
# 保留非控制类字符
clean_filename = ''.join(c for c in filename if not unicodedata.category(c).startswith('C'))

with open(clean_filename, mode="r", encoding="utf-8") as file:
    for line in file:
        print(line)

方案3:手动重命名文件(适合单文件)

如果只是单个文件,最简单的方式是在Windows文件资源管理器里操作:

  • 选中目标文件,按F2进入重命名模式
  • 光标移到文件名末尾那个看不见的字符位置(就是你看到的3里的隐藏部分),按退格键删除
  • 重新输入正常的文件名(比如becach_besmile_vardai_failas_3.txt)

额外提醒

注意在Python里写文件路径时,最好用原始字符串(加r前缀),避免路径中的\被当成转义字符(比如\n会被解析为换行符),这也是我上面代码里都加了r的原因。

内容的提问来源于stack exchange,提问作者Jonas.S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:19:58