gpt4 book ai didi

python3将文件(从文件夹和子文件夹)转换为特定格式的json文件(项目包括文件夹名称和文件名)

转载 作者:行者123 更新时间:2023-12-01 07:23:46 27 4
gpt4 key购买 nike

python3将文件(从文件夹和子文件夹)转换为特定格式的json文件(项目包括文件夹名称和文件名)

我只能列出文件和目录

from os import walk
path = "F:\\stack\\sample"
for root, dirs, files in walk(path):
print("folder:", dirs)
print("file:", files)
print("\n")

下面是我的文件夹和文件结构

F:\stack\sample\EXA18902962\IM-2613-0001.jpg
F:\stack\sample\EXA18902962\IM-2613-0002.jpg
F:\stack\sample\EXA18902962\IM-2613-0003.jpg
F:\stack\sample\EXA18902962\IM-2613-0004.jpg
F:\stack\sample\EXA18902962\IM-2613-0005.jpg

F:\stack\sample\EXA18B01363\IM-2293-0001.jpg
F:\stack\sample\EXA18B01363\IM-2293-0002.jpg
F:\stack\sample\EXA18B01363\IM-2293-0003.jpg

F:\stack\sample\EXA18C05030\IM-0960-0001.jpg
F:\stack\sample\EXA18C05030\IM-0960-0002.jpg
F:\stack\sample\EXA18C05030\IM-0960-0003.jpg
F:\stack\sample\EXA18C05030\IM-0960-0004.jpg
F:\stack\sample\EXA18C05030\IM-0960-0005.jpg
F:\stack\sample\EXA18C05030\IM-0960-0006.jpg
F:\stack\sample\EXA18C05030\IM-0960-0007.jpg
F:\stack\sample\EXA18C05030\IM-0960-0008.jpg

希望输出像下面这样的 Sample.json 的 json 文件

{  
"EXA18902962":[
"IM-2613-0001.jpg",
"IM-2613-0002.jpg",
"IM-2613-0003.jpg",
"IM-2613-0004.jpg",
"IM-2613-0005.jpg"
],
"EXA18B01363":[
"IM-2293-0001.jpg",
"IM-2293-0002.jpg",
"IM-2293-0003.jpg"
],
"EXA18C05030":[
"IM-0960-0001.jpg",
"IM-0960-0002.jpg",
"IM-0960-0003.jpg",
"IM-0960-0004.jpg",
"IM-0960-0005.jpg",
"IM-0960-0006.jpg",
"IM-0960-0007.jpg",
"IM-0960-0008.jpg"
]
}

最佳答案

一种稳健的方法:

from collections import defaultdict
from os import path
import glob
import json

base_path = "F:\\stack\\sample"
d = defaultdict(list)

for file in glob.iglob(path.join(base_path, '*/*.jpg'), recursive=True):
d[path.basename(path.dirname(file))].append(path.basename(file))

print(json.dumps(d))
# use json.dump to write json data into particular file

关于python3将文件(从文件夹和子文件夹)转换为特定格式的json文件(项目包括文件夹名称和文件名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57553647/

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