首页 > 解决方案 > 我如何使用python一次性处理所有子文件夹

问题描述

我有一个 raw_data 文件夹,其中包含 4 个文件夹,即: orders, playlist_track, track_facts,tracks

如下每一个——

./raw_data/tracks/tracks_0.csv
./raw_data/tracks/tracks_1.json
./raw_data/tracks/tracks_2.csv

ETC...

应该合并到一个文件中:./processed_data/tracks.json.gz

我编写了以下代码,它读取 csv 文件并将其转换为 json 并将其放入 jsonfile/playlist_tracksjson/playlist_track_4.json,我如何在原始数据文件中一次性处理所有子文件夹????

import csv 
import json 
import pandas as pd
import glob

csv_file = pd.DataFrame(
    pd.read_csv(
        "raw_data/playlist_tracks/playlist_track_4.csv",
        header=0,
        index_col=False
    )
)

csv_file.to_json(
    "processedfile/playlist_tracksjson/playlist_track_4.json",
    orient = "records",
    double_precision=0,
    lines=True
)

result = ''
for f in glob.glob("*.json"):
    with open(f, "r") as infile:
        result += infile.read()
    with open("merged_file.json.gz", "w") as outfile:
        outfile.writelines(result)

但是文件夹结构是

processedfile/ordersjson/mergedtracksfile.json.gz

而我想要

processedfile/mergedtracksfile.json.gz

如何一次性处理这些文件夹中的所有文件?

标签: pythonpython-3.xdataframe

解决方案


使用os.walk. 请参阅https://docs.python.org/3/library/os.html

此函数递归遍历目录及其所有子目录。


推荐阅读