如何用pandas批量处理目录CSV文件并输出新文件及FileNotFoundError排查
错误原因
- 路径拼接错误:
os.listdir(DIR)仅返回目录下的纯文件名,读取文件时没有拼接DIR前缀,程序会默认在脚本当前工作目录查找文件,导致找不到目标文件。 - 输出路径错误:保存文件时写的
'DIR/filename_{}'.format(filename)是将DIR作为普通字符串处理,没有调用你定义的DIR变量,同时命名规则不符合需求,会生成前缀为filename_的错误文件名。 - 冗余代码:
pd.read_csv返回的结果本身就是DataFrame类型,无需再用pd.DataFrame(trim_data)重复转换。
修复后的完整代码
import os import pandas as pd DIR = 'Dummy_Folder/' JV_suffix = "Current-Voltage Data.csv" for filename in os.listdir(DIR): if filename.endswith(JV_suffix): # 拼接完整的输入文件路径 input_path = os.path.join(DIR, filename) data = pd.read_csv(input_path, header=None) # 增加行数校验,避免文件过短导致删除不存在的行报错 if len(data) < 6: print(f"文件{filename}行数不足6行,跳过处理") continue # 定义要删除的行 trim = [0,1,2, len(data)-1, len(data)-2, len(data)-3] trim_data = data.drop(trim, axis=0) # 拼接输出路径,原文件名后加_processed后缀标识处理完成 output_filename = f"{os.path.splitext(filename)[0]}_processed.csv" output_path = os.path.join(DIR, output_filename) trim_data.to_csv(output_path, index=False)
补充说明
- 代码增加了行数校验逻辑,避免待处理文件行数过少时删除不存在的索引行抛出异常
- 输出文件命名沿用原文件名主体,添加
_processed后缀标识已处理,你可以根据需求自行修改后缀名 - 使用
os.path.join拼接路径可以适配不同操作系统的路径分隔符规则,兼容性更强
内容的提问来源于stack exchange,提问作者Nick B
相关产品推荐
相关产品推荐

