1

python3 convert files (from folder and sub folder) to json file on specific format(item include folder name and file name)

i just can list file and directory

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

below is my folder and file structure

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

hope output a json file like sample.json like below

{  
   "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"
   ]
}

1 Answer 1

1

A robust way:

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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.