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

使用Python Pandas合并目录文件时触发FileNotFoundError求助

问题原因

报错里的路径./Sales_DataSales_April_2019.csv暴露了核心问题:路径拼接时缺少目录分隔符。你直接把./Sales_Data和文件名字符串拼接,导致目录名和文件名连在了一起,系统无法定位到正确的文件位置。

修正方案

方案1:使用os.path.join(跨平台兼容)

os.path.join会根据操作系统自动添加正确的目录分隔符,避免手动拼接出错:

import os
import pandas as pd

files = [file for file in os.listdir('./Sales_Data')]
all_months_data = pd.DataFrame()

for file in files:
    # 自动拼接正确路径
    full_path = os.path.join('./Sales_Data', file)
    df = pd.read_csv(full_path)
    all_months_data = pd.concat([all_months_data, df])

all_months_data.to_csv("all_data.csv", index=False)

方案2:使用pathlib(更现代的路径处理方式)

Python 3.4+推荐用pathlib,语法更简洁直观,还能直接筛选CSV文件:

from pathlib import Path
import pandas as pd

# 定义数据目录
data_dir = Path('./Sales_Data')
# 只获取目录下的所有CSV文件
csv_files = list(data_dir.glob('*.csv'))

# 一次性合并所有CSV,效率更高
all_months_data = pd.concat([pd.read_csv(file) for file in csv_files])

all_months_data.to_csv("all_data.csv", index=False)
额外注意事项
  • 确认./Sales_Data目录确实存在于当前脚本的运行路径下,可通过print(os.getcwd())查看当前工作目录
  • 筛选CSV文件:如果Sales_Data目录里有非CSV文件,方案2的glob('*.csv')能自动过滤,方案1可以加判断:files = [file for file in os.listdir('./Sales_Data') if file.endswith('.csv')]
  • 效率优化:循环中逐次concat会重复创建DataFrame,用列表推导式先读取所有文件再一次性concat,处理大量文件时速度更快

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:20:31