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

如何使用Dask的read_csv递归读取多级目录下的所有CSV文件并将每个文件作为一个分区

使用Dask读取多文件夹下的CSV并按文件单独分区

嘿,这个需求其实Dask原生就支持得很好,不用额外写复杂逻辑来拆分分区,几步就能搞定:

核心思路

Dask的read_csv函数默认会把每个输入文件作为一个独立的分区,所以我们只需要用通配符精准匹配到所有目标CSV文件就行。

具体代码实现

假设你的根文件夹路径是Folder,可以用递归通配符**来匹配所有子文件夹里的CSV文件:

import dask.dataframe as dd

# 匹配Folder下所有子文件夹中的.csv文件
df = dd.read_csv("Folder/**/*.csv")

验证分区是否符合预期

你可以通过下面的代码查看分区数量,它应该等于所有CSV文件的总数(你的例子里是4+2+2=8个分区):

print(f"分区总数: {len(df.partitions)}")

一些额外注意事项

  • 如果不同CSV文件的列结构不一致,可以添加dtype参数指定统一的数据类型,或者用on_bad_lines='skip'跳过格式有问题的行(旧版Dask用error_bad_lines=False)。
  • 如果你需要更精准地控制文件列表,也可以手动收集所有CSV路径再传给read_csv,效果完全一致:
    import glob
    
    # 递归收集所有CSV文件路径
    file_paths = glob.glob("Folder/**/*.csv", recursive=True)
    df = dd.read_csv(file_paths)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:27:37