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

如何用Python仅处理多层目录中的dragon.csv文件?

仅处理所有dragon.csv文件的Python代码修改方案

问题背景

download目录下包含2019、2020、2021、2022四个年份文件夹,每个年份文件夹下有对应月份的子文件夹,每个月份文件夹内存在dragon.csv和kingdom.csv两个CSV文件。需要修改现有代码,实现仅处理所有dragon.csv文件的需求。

现有代码片段

初始导入与类定义

import os
import pandas as pd
import numpy as np

path = 'download/2019'
save_path = 'download'

class Preprocess:
    
    def __init__(self, path, save_path):  
        self.path = path
        self.save_path = save_path

数据处理与保存函数

def save_dataset(path, save_path):

    for dir in os.listdir(path):
        for file in os.listdir(os.path.join(path, dir)):
            if file[-3:] == 'csv':
                df = pd.read_csv(os.path.join(path, dir, file))
                print(f'Reading data from {os.path.join(path, dir, file)}')

                print('Start Preprocessing...')
                df = preprocessing(df)
                print('Finished!')
                
                if not os.path.exists(os.path.join(save_path, dir)):
                    os.makedirs(os.path.join(save_path, dir))
                df.to_csv(os.path.join(save_path, dir, file), index=False)

save_dataset(path, save_path)

修改方案

  1. 调整根路径:将path从'download/2019'改为'download',遍历所有年份文件夹。
  2. 完善循环层级:增加年份文件夹的遍历层,覆盖完整的「年份-月份」目录结构。
  3. 精确筛选目标文件:将文件判断条件改为file == 'dragon.csv',避免误处理其他CSV文件。
  4. 修正保存路径层级:保存时保留年份和月份的目录结构,确保处理后的文件存储路径与原路径对应。

修改后的完整代码

import os
import pandas as pd
import numpy as np

# 修改根路径为download,遍历所有年份
path = 'download'
save_path = 'download'

class Preprocess:
    
    def __init__(self, path, save_path):  
        self.path = path
        self.save_path = save_path

# 假设preprocessing函数已提前定义(根据实际需求实现逻辑)
def preprocessing(df):
    # 示例预处理逻辑,可根据实际需求修改
    return df

def save_dataset(path, save_path):
    # 第一层循环:遍历年份文件夹(2019-2022)
    for year_dir in os.listdir(path):
        year_path = os.path.join(path, year_dir)
        # 跳过非文件夹类型的项
        if not os.path.isdir(year_path):
            continue
        # 第二层循环:遍历年份下的月份文件夹
        for month_dir in os.listdir(year_path):
            month_path = os.path.join(year_path, month_dir)
            if not os.path.isdir(month_path):
                continue
            # 第三层循环:遍历月份文件夹下的文件
            for file in os.listdir(month_path):
                # 仅处理dragon.csv文件
                if file == 'dragon.csv':
                    file_path = os.path.join(month_path, file)
                    df = pd.read_csv(file_path)
                    print(f'Reading data from {file_path}')

                    print('Start Preprocessing...')
                    df = preprocessing(df)
                    print('Finished!')
                    
                    # 构建保存路径:save_path/年份/月份/dragon.csv
                    save_dir = os.path.join(save_path, year_dir, month_dir)
                    if not os.path.exists(save_dir):
                        os.makedirs(save_dir)
                    save_file_path = os.path.join(save_dir, file)
                    df.to_csv(save_file_path, index=False)

save_dataset(path, save_path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:45:47