Python脚本报错:读取文件并添加Clean后缀保存处理文件失败
问题解决:文件批量小写转换并保存为新文件
需求
- 打开并读取目录下的文件
- 基于原文件名添加“Clean”前缀生成新文件名
- 将文件内容转换为小写
- 用新文件名保存处理后的内容
原脚本错误分析
原脚本触发FileNotFoundError,核心问题如下:
- 未定义
cwd变量:os.walk(cwd)中的cwd未初始化,需替换为os.getcwd()获取当前工作目录 - 文件路径错误:直接使用
filename打开文件,os.walk返回的filename是相对子目录的文件名,需结合dirpath组装完整路径:os.path.join(dirpath, filename) - 保存逻辑错误:
os.rename("fileinB","name")完全错误——fileinB是内存中的字符串变量,不是文件;name是变量却加了引号,而且需求是保存新内容到新文件,不是重命名原文件 - 缩进问题:部分代码缩进错误,导致逻辑执行顺序混乱
修正后的脚本
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
相关产品推荐
相关产品推荐

