使用Pandas合并多CSV文件时遭遇PermissionError权限拒绝错误
解决多CSV文件合并时的PermissionError问题
问题原因
你的代码报错是因为os.listdir("./Sales_data")会列出目录下所有内容,包括Jupyter Notebook自动生成的隐藏文件夹.ipynb_checkpoints。而pd.read_csv()只能读取文件,无法读取文件夹,因此触发权限拒绝错误。
解决方案
核心思路是只筛选出目录下的CSV文件,跳过非CSV类型的内容(比如文件夹、其他格式文件)。以下是修正后的完整代码:
import pandas as pd import os # 仅筛选后缀为.csv的文件,跳过文件夹和其他非CSV内容 files = [file for file in os.listdir("./Sales_data") if file.endswith('.csv')] all_months_data = pd.DataFrame() for file in files: # 用os.path.join拼接路径,适配不同操作系统的路径分隔符 file_path = os.path.join("./Sales_data", file) df = pd.read_csv(file_path) all_months_data = pd.concat([all_months_data, df]) # 可选:将合并后的数据保存为新CSV文件(index=False避免生成额外索引列) all_months_data.to_csv("./Sales_data/all_sales_data.csv", index=False) all_months_data.head()
关键优化点
- 过滤文件类型:通过
file.endswith('.csv')确保只处理CSV文件,直接跳过.ipynb_checkpoints这类文件夹 - 安全路径拼接:使用
os.path.join替代字符串拼接路径,避免Windows/Linux路径分隔符差异导致的错误 - 结果持久化:添加
to_csv步骤将合并结果保存,方便后续直接使用
内容的提问来源于stack exchange,提问作者Batman1865
相关产品推荐
相关产品推荐

