Python读取CSV遇FileNotFoundError:文件夹路径传递及代码修复咨询
问题分析与代码修复
你遇到的FileNotFoundError核心原因是读取文件时仅传入了文件名,而非完整文件路径——os.listdir()返回的只是文件夹内的文件名,Python无法直接定位到文件位置。除此之外,你的代码还存在循环缩进错误、变量逻辑混乱等问题,以下是完整修复方案:
修复后的完整代码
import os import pandas as pd def clean_files(input_folder_path, output_folder_path): # 获取文件夹下所有CSV文件 csv_list = [file for file in os.listdir(input_folder_path) if file.endswith('.csv')] # 初始化列表存储所有清洗后的DataFrame cleaned_df_list = [] # 遍历每个CSV文件进行处理 for file in csv_list: # 生成完整文件路径 file_path = os.path.join(input_folder_path, file) # 读取CSV文件 df = pd.read_csv(file_path) # 移除前5行数据 cleaned_df = df.iloc[5:] # 将清洗后的DataFrame加入列表 cleaned_df_list.append(cleaned_df) # 生成输出文件路径 output_file_path = os.path.join(output_folder_path, f"cleaned_{file}") # 保存清洗后的文件 cleaned_df.to_csv(output_file_path, index=False) # 打印清洗后的结果 print(f"清洗后的文件 {file}:\n{cleaned_df}\n") return cleaned_df_list
关键修复点说明
- 文件路径修复:使用
os.path.join(input_folder_path, file)拼接完整路径,确保Python能正确找到目标文件 - 循环逻辑修正:将读取、清洗、保存的代码放到
for file in csv_list循环内部,保证每个文件都被逐一处理 - 变量名规范:将存储清洗后DataFrame的列表命名为
cleaned_df_list,避免与单个文件的DataFrame变量df混淆 - 移除错误操作:删除了无效的
df.append(df)(会重复追加当前DataFrame)和重复的列表追加操作 - 输出路径保护:使用
output_file_path存储最终输出路径,避免覆盖传入的output_folder_path参数
内容的提问来源于stack exchange,提问作者pankaj sonawane
相关产品推荐
相关产品推荐

