使用glob递归获取父目录子文件夹CSV失败,为何无法遍历子目录?
问题原因与解决方法
为什么glob无法遍历子文件夹的CSV?
你写的路径/ParentDirectory/*.csv只会匹配ParentDirectory根目录下直接存放的CSV文件,哪怕开启了recursive=True也没用——因为recursive=True的作用是配合通配符**实现递归遍历,你的路径里没有**,glob只会在指定的一级目录下查找文件,自然找不到子文件夹里的内容,最终files是空列表,pd.concat就会抛出ValueError: No objects to concatenate。
而你指定具体子文件夹路径(比如/ParentDirectory/SubFolder 3/*.csv)能正常运行,是因为这个路径直接指向了CSV文件所在的目录,*.csv可以匹配到该目录下的文件。
修正后的代码
把路径中的通配符改成**/*.csv,让glob递归匹配所有层级子文件夹里的CSV:
import pandas as pd import glob # ** 匹配任意层级的子目录 files = glob.glob('/ParentDirectory/**/*.csv', recursive=True) # 可选:先判断是否找到文件,避免空列表报错 if not files: raise FileNotFoundError("未找到任何CSV文件") df = pd.concat([pd.read_csv(fp) for fp in files], ignore_index=True)
内容的提问来源于stack exchange,提问作者user53526356
相关产品推荐
相关产品推荐

