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

python3将文件(从文件夹和子文件夹)转换为特定格式的json文件(项目包括文件夹名和文件名),python,json,file,directory,Python,Json,File,Directory,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

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