python - 我如何使用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
如何一次性处理这些文件夹中的所有文件?
解决方案
使用os.walk
. 请参阅https://docs.python.org/3/library/os.html。
此函数递归遍历目录及其所有子目录。
推荐阅读
- java - 有状态服务有什么好处吗
- windows - Git、SSH、Windows 和 VS 代码。设置新的身份验证
- javascript - 从html中提取文本并放置在文本区域不是在同一行?
- reactjs - 使用 Typescript 创建 React 组件
- php - 新到 symfony 5-PUT 方法中的表单错误“找不到路由”
- python - 如何从 python 中的用户 id 获取 Discord 成员用户名并移动到另一个频道?
- linux - 无法将 docker 映像推/拉到经过证书身份验证的私有注册表?(仅适用于 WSL,远程错误:tls: alert(116))
- docker - 在 Kubernetes 集群上注册一个 Gitlab 运行器 - 新运行器尚未连接
- pdf - 使用 LibreOffice 创建 PDF 表单。签名字段
- apache - 使用动态 URL 配置 Apache2 代理