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

Python批量修改目录下.act后缀为.csv报FileNotFoundError怎么排查

排查步骤
  • 校验读取到的文件名是否正确
    在for循环第一行加入print(repr(x)),输出os.listdir读取到的每个文件名原始格式,对比和报错的file_2011_06.act是否完全一致,排查是否存在不可见的Unicode字符、前后空格等肉眼无法识别的差异。

  • 修复后缀替换逻辑的潜在问题
    你当前的x.replace("act","csv")会替换文件名中所有出现的act字符串,而非仅后缀。比如文件名是act_report.act,替换后会变成csv_report.csv,虽然你本次报错的文件不存在这个问题,但建议修改为仅替换后缀的写法:
    new_name = os.path.splitext(x)[0] + ".csv"
    避免后续文件出现误替换导致路径不匹配。

  • 确认文件未被其他程序占用
    如果.act文件正被Excel、文本编辑器等其他程序打开,系统会对文件加锁,导致rename操作失败。执行脚本前确认所有待修改的.act文件都处于关闭状态。

  • 改用官方路径拼接方法
    不要手动拼接路径字符串,改用os.path.join方法自动适配系统的路径分隔符,避免手动写斜杠出现的多写、漏写问题:

src_path = os.path.join(path, x)
dst_path = os.path.join(path, new_name)
os.rename(src_path, dst_path)
  • 排查目标文件重名问题
    如果目标路径下已经存在同名的.csv文件,部分Windows版本会抛出类似找不到文件的错误。你可以在rename前先判断目标文件是否存在:
if os.path.exists(dst_path):
    print(f"目标文件{new_name}已存在,跳过或处理重名")
    continue
  • 增加异常捕获打印详细信息
    你可以给改名逻辑加上异常捕获,输出更明确的排查信息:
try:
    os.rename(src_path, dst_path)
    print(f"修改成功:{new_name}")
except Exception as e:
    print(f"处理文件{x}失败,错误:{e}")
    print(f"源文件是否存在:{os.path.exists(src_path)}")
    print(f"目标文件是否存在:{os.path.exists(dst_path)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:15:01