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

如何用for循环遍历多文件夹读写CSV文件并指定非默认目录

搞定Python跨路径CSV处理与文件夹遍历的方案

我来帮你一步步实现这个需求,核心就是指定根路径+循环遍历目标文件夹,再结合CSV读写和计算逻辑就行。下面是具体的实现思路和完整代码示例:

1. 先明确根路径

首先你得知道包含Folder1到Folder8的父文件夹的绝对路径,比如这个父文件夹在D:/Data/MyFolders或者/home/user/data/ParentDir。把这个路径赋值给一个变量,后续所有路径都基于它来拼接,避免硬编码和跨平台问题。

2. 循环遍历Folder1到Folder8

用for循环生成1到8的数字,拼接成文件夹名称(比如Folder{num}),再用os.path.join()把根路径和文件夹名组合成完整的文件夹路径——这个方法会自动适配Windows和Linux的路径分隔符,非常省心。

3. 完整代码示例(带CSV处理逻辑)

下面是一个可直接参考的脚本,包含了路径指定、文件夹遍历、CSV读写、计算、结果保存的全流程,你可以根据自己的计算需求修改中间的处理逻辑:

import os
import csv

# --------------------------
# 第一步:指定包含Folder1-Folder8的父文件夹路径
# 替换成你实际的路径,比如 Windows: "D:/YourData/ParentFolder" 或 Linux/Mac: "/home/you/data/ParentDir"
root_parent_path = "/path/to/your/parent/folder"
# --------------------------

# 遍历Folder1到Folder8
for folder_num in range(1, 9):  # range(1,9)会生成1-8的数字
    folder_name = f"Folder{folder_num}"
    # 拼接当前文件夹的完整路径
    folder_path = os.path.join(root_parent_path, folder_name)
    
    # 先检查文件夹是否存在,避免报错
    if not os.path.exists(folder_path):
        print(f"警告:文件夹 {folder_name} 不存在,跳过...")
        continue
    
    # --------------------------
    # 第二步:读取当前文件夹里的CSV文件(这里假设每个文件夹里有input.csv,你可以改成实际文件名)
    input_csv_path = os.path.join(folder_path, "input.csv")
    if not os.path.isfile(input_csv_path):
        print(f"警告:{folder_name} 中未找到input.csv,跳过...")
        continue
    
    # 读取CSV并存储数据(示例:读取所有行)
    csv_data = []
    with open(input_csv_path, mode='r', newline='', encoding='utf-8') as input_file:
        reader = csv.reader(input_file)
        header = next(reader)  # 获取表头
        csv_data.append(header)
        for row in reader:
            csv_data.append(row)
    
    # --------------------------
    # 第三步:执行你的运算/计算逻辑(这里举个简单例子:新增一列"总和",计算前两列数值的和)
    # 注意:如果你的CSV里是字符串类型的数值,要先转成int/float
    if len(csv_data) > 1:  # 确保有数据行
        # 给表头加新列
        csv_data[0].append("总和")
        # 遍历每一行数据(跳过表头)
        for row in csv_data[1:]:
            try:
                # 假设前两列是数值类型,替换成你实际需要计算的列索引
                num1 = float(row[0])
                num2 = float(row[1])
                total = num1 + num2
                row.append(str(total))
            except ValueError:
                row.append("无效数值")
    
    # --------------------------
    # 第四步:生成新的CSV文件,保存到当前文件夹
    output_csv_path = os.path.join(folder_path, "output.csv")
    with open(output_csv_path, mode='w', newline='', encoding='utf-8') as output_file:
        writer = csv.writer(output_file)
        writer.writerows(csv_data)
    
    print(f"{folder_name} 处理完成,已生成output.csv")

print("所有文件夹处理完毕!")

关键细节说明

  • 路径处理:全程用os.path.join()拼接路径,不要手动写/或\,避免跨平台出错。
  • 异常处理:加了文件夹和文件存在性检查,还有数值转换的异常捕获,避免脚本中途崩溃。
  • 自定义逻辑:你可以把中间的计算部分替换成自己需要的运算——比如求平均值、统计频次、复杂公式计算等等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:37:01