Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Represent directory tree as JSON

Is there any easy way to generate such a JSON? I found os.walk() and os.listdir(), so I may do recursive descending into directories and build a python object, well, but it sounds like reinventing a wheel, maybe someone knows working code for such a task?

{   "type": "directory",   "name": "hello",   "children": [     {       "type": "directory",       "name": "world",       "children": [         {           "type": "file",           "name": "one.txt"         },         {           "type": "file",           "name": "two.txt"         }       ]     },     {       "type": "file",       "name": "README"     }   ] } 
like image 763
Andrey Moiseev Avatar asked Aug 10 '14 06:08

Andrey Moiseev


1 Answers

I don't think that this task is a "wheel" (so to speak). But it is something which you can easily achieve by means of the tools you mentioned:

import os import json  def path_to_dict(path):     d = {'name': os.path.basename(path)}     if os.path.isdir(path):         d['type'] = "directory"         d['children'] = [path_to_dict(os.path.join(path,x)) for x in os.listdir\ (path)]     else:         d['type'] = "file"     return d  print json.dumps(path_to_dict('.')) 
like image 133
Emanuele Paolini Avatar answered Sep 20 '22 13:09

Emanuele Paolini