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

Python脚本报错:读取文件并添加Clean后缀保存处理文件失败

问题解决:文件批量小写转换并保存为新文件

需求

  • 打开并读取目录下的文件
  • 基于原文件名添加“Clean”前缀生成新文件名
  • 将文件内容转换为小写
  • 用新文件名保存处理后的内容

原脚本错误分析

原脚本触发FileNotFoundError,核心问题如下:

  1. 未定义cwd变量:os.walk(cwd)中的cwd未初始化,需替换为os.getcwd()获取当前工作目录
  2. 文件路径错误:直接使用filename打开文件,os.walk返回的filename是相对子目录的文件名,需结合dirpath组装完整路径:os.path.join(dirpath, filename)
  3. 保存逻辑错误:os.rename("fileinB","name")完全错误——fileinB是内存中的字符串变量,不是文件;name是变量却加了引号,而且需求是保存新内容到新文件,不是重命名原文件
  4. 缩进问题:部分代码缩进错误,导致逻辑执行顺序混乱

修正后的脚本

import os

# 获取当前工作目录
cwd = os.getcwd()

# 遍历目录下所有文件
for (dirpath, dirnames, filenames) in os.walk(cwd):
    for filename in filenames:
        # 组装完整文件路径
        full_path = os.path.join(dirpath, filename)
        
        # 读取原文件内容
        with open(full_path, 'r', encoding='utf-8', errors='ignore') as filein:
            content = filein.read()
        
        # 生成新文件名:在原文件名前加"Clean "
        new_filename = f"Clean {filename}"
        new_full_path = os.path.join(dirpath, new_filename)
        print(f"新文件名:{new_filename}")
        
        # 将内容转小写并写入新文件
        with open(new_full_path, 'w', encoding='utf-8') as fileout:
            fileout.write(content.lower())
        
        print(f"已处理并保存:{new_full_path}\n")

错误解释

原报错FileNotFoundError: [WinError 2] 系统找不到指定的文件: 'fileinB' -> 'name',原因是:

  • 错误地将变量名fileinB和name用引号包裹,当成了文件名
  • fileinB是内存中的字符串,不是磁盘上的文件,os.rename无法找到这个“文件”
  • 正确逻辑是将处理后的字符串写入新创建的文件,而非重命名不存在的文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:20:10