使用Pandas合并指定目录多CSV文件时报文件不存在错误如何解决
问题原因分析
- 路径基准问题:Python中使用
./开头的相对路径时,路径的基准是你执行脚本时终端的当前工作目录,而非脚本文件本身存储的Demo目录。如果你不是在Demo目录下启动的脚本,相对路径就会指向错误的位置,出现找不到文件的报错。你单独测试读取单个文件时的工作目录和跑完整脚本时的工作目录可能不一致,才会出现单个读取成功、批量读取失败的情况。 os.listdir返回非目标文件:os.listdir()会返回目标目录下所有的条目,包括系统生成的隐藏文件(比如macOS的.DS_Store、Windows的Thumbs.db)、子目录等,这些条目拼接成路径后自然不存在对应的CSV文件,触发报错。- 额外注意:你当前的代码只做了读取操作,没有将多个DataFrame合并的逻辑,后续即使路径问题解决也无法得到合并后的CSV文件。
修复方案
import os import pandas as pd # 先获取当前脚本所在的Demo目录的绝对路径,避免工作目录变动导致路径错误 script_dir = os.path.dirname(os.path.abspath(__file__)) # 构造Sales_Data目录的绝对路径,适配不同操作系统的路径分隔符 sales_data_dir = os.path.join(script_dir, '..', 'SalesAnalysis', 'Sales_Data') all_df = [] # 遍历目录时只筛选后缀为.csv的文件,排除隐藏文件、子目录等干扰项 for filename in os.listdir(sales_data_dir): if filename.endswith('.csv'): file_path = os.path.join(sales_data_dir, filename) current_df = pd.read_csv(file_path) all_df.append(current_df) # 合并所有读取到的DataFrame merged_df = pd.concat(all_df, ignore_index=True) # 保存到Demo目录下的one_file.csv merged_df.to_csv(os.path.join(script_dir, 'one_file.csv'), index=False)
内容的提问来源于stack exchange,提问作者swordlordswamplord
相关产品推荐
相关产品推荐

