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

如何避免在enumerate循环中手动编写A-K子文件夹名称列表?

自动遍历子文件夹合并CSV文件的优化方案

看起来你已经搞定了手动指定文件夹合并CSV的逻辑,现在想摆脱手动写文件夹列表的麻烦?这有两种实用的方法帮你自动获取目标子文件夹:

方法1:用os模块遍历目录

这是比较传统的路径处理方式,兼容性好,适合所有Python版本:

你可以用os.listdir()获取根目录下的所有条目,然后筛选出文件夹,再可选过滤出A-K的文件夹(如果你的Datas目录里还有其他无关文件夹的话)。修改后的代码如下:

import os
import glob
import pandas as pd

# 根目录路径
root_folder = "/Users/Name/Desktop/Datas/"

# 遍历根目录下的所有条目
for item in os.listdir(root_folder):
    item_path = os.path.join(root_folder, item)
    # 只处理文件夹
    if os.path.isdir(item_path):
        # 可选:只保留A到K的文件夹(如果需要过滤的话)
        if item in [chr(c) for c in range(ord('A'), ord('K') + 1)]:
            # 读取当前文件夹下所有CSV
            csv_files = glob.glob(os.path.join(item_path, "*.csv"))
            # 合并CSV(先判断是否有文件,避免空文件夹报错)
            if csv_files:
                df = pd.concat((pd.read_csv(file) for file in csv_files), ignore_index=True)
                # 这里可以添加你后续的处理逻辑,比如保存合并后的文件
                # df.to_csv(f"{item_path}/merged.csv", index=False)

如果你的Datas目录下只有A-K这些目标子文件夹,那可以直接删掉那个判断item in [...]的条件,直接遍历所有文件夹即可。

方法2:用pathlib模块(Python3.4+推荐)

pathlib是Python3.4以后官方推荐的路径处理库,代码更简洁直观,可读性更强:

from pathlib import Path
import pandas as pd

root_folder = Path("/Users/Name/Desktop/Datas/")

# 遍历根目录下的所有子文件夹
for folder in root_folder.iterdir():
    if folder.is_dir():
        # 可选过滤A-K文件夹
        if folder.name in [chr(c) for c in range(ord('A'), ord('K') + 1)]:
            # 获取当前文件夹下所有CSV文件
            csv_files = list(folder.glob("*.csv"))
            if csv_files:
                df = pd.concat((pd.read_csv(file) for file in csv_files), ignore_index=True)
                # 后续处理逻辑
                # df.to_csv(folder / "merged.csv", index=False)

额外小技巧

如果以后需要调整文件夹范围(比如从A到M),只需要修改range(ord('A'), ord('K') + 1)里的ord('K')为ord('M')就行,不用手动逐个修改文件夹名称,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:43:03