gpt4 book ai didi

python - 如何使用 python 创建 json 格式的文件夹树?

转载 作者:行者123 更新时间:2023-12-04 03:38:25 29 4
gpt4 key购买 nike

我想知道,如果可能的话,提供一个文件夹路径并让 python 脚本扫描给定的文件夹并返回一个 json 树,其中包含每个文件夹的文件数量。树应该包含每个子文件夹:

例如结果:

[{
foldername: "folder1",
amount_of_files: 123,
children: [
{
foldername: "folder1.1",
amount_of_files: 3,
children: []
},
{
foldername: "folder1.2",
amount_of_files: 5,
children: [
{
foldername: "folder1.2.1",
amount_of_files: 20,
children: []
}
]
}
]
},
{
foldername: "folder2",
amount_of_files: 1,
children: [
{
foldername: "folder2.1",
amount_of_files: 3,
children: [
{
foldername: "folder2.1.1",
amount_of_files: 2,
children: [
{
foldername: "folder2.1.1.1",
amount_of_files: 24,
children: []
}
]
}
]
},
{
foldername: "folder1.2",
amount_of_files: 5,
children: []
}
]
}
]

最佳答案

您可以通过递归使用 os.listdir:

import os, json
def get_tree(path=os.getcwd()):
return {'foldername':path,
'amount_of_files':sum(not os.path.isdir(os.path.join(path, k)) for k in os.listdir(path)),
'children':[get_tree(os.path.join(path, k)) for k in os.listdir(path) if os.path.isdir(os.path.join(path, k))]}


with open('folder_tree.json', 'w') as f:
json.dump(get_tree(), f)

要生成字典列表,每个字典都包含文件夹名称和文件数,您可以使用递归生成器函数:

def get_tree(path=os.getcwd()):
yield {'foldername':path, 'amount_of_files':sum(not os.path.isdir(os.path.join(path, k)) for k in os.listdir(path))}
for i in os.listdir(path):
if os.path.isdir(os.path.join(path, i)):
yield from get_tree(os.path.join(path, i))

with open('folder_tree.json', 'w') as f:
json.dump(list(get_tree()), f)

关于python - 如何使用 python 创建 json 格式的文件夹树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66508449/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com