2014-10-09 2 views
2

Я хотел бы сохранить структуру JSON, в которой хранятся проекты и файлы, над которыми я сейчас работаю. Файловая структура выглядит следующим образом:Render JSON для структуры каталогов в Python

|-project1 
|--sequence1 
|----file1.ext 
|----file2.ext 
|-project2 
|--sequence1 
|----file1.ext 
|----file2.ext 
|-project3 
|--sequence3 
|----file1.ext 
|----file2.ext 

JSON версия будет выглядеть следующим образом:

data = [ 
    { 
    type: "folder", 
    name: "project1", 
    path: "/project1", 
    children: [ 
     { 
     type: "folder", 
     name: "sequence1", 
     path: "/project1/sequence1", 
     children: [ 
      { 
      type: "file", 
      name: "file1.ext", 
      path: "/project1/sequence1/file1.ext" 
      } , { 
      type: "file", 
      name: "file2.ext", 
      path: "/project1/sequence1/file2.ext" 

      ...etc 
      } 
     ] 
     } 
    ] 
    } 
] 

Можно ли вынести эту структуру в реальные каталоги и файлы с помощью Python? (это могут быть пустые файлы). С другой стороны, я хотел бы построить функцию, проходящую через существующие каталоги, возвращая аналогичный код JSON.

+0

Вы можете использовать модуль «json» (часть стандартной библиотеки) и функции «загрузить» или «загрузить», чтобы загрузить данные из файла или строки в качестве словаря python. –

ответ

1

Это должно быть достаточно легко создать словарь с помощью рекурсивной функции и некоторые из положительных героев в os модуле ...:

import os 

def dir_to_list(dirname, path=os.path.pathsep): 
    data = [] 
    for name in os.listdir(dirname): 
     dct = {} 
     dct['name'] = name 
     dct['path'] = path + name 

     full_path = os.path.join(dirname, name) 
     if os.path.isfile(fullpath): 
      dct['type'] = 'file' 
     elif os.path.isdir(fullpath): 
      dct['type'] = 'folder' 
      dct['children'] = dir_to_list(full_path, path=path + name + os.path.pathsep) 
    return data 

непроверенных

Тогда вы можете просто json.dump это к файлу или json.dumps это к строке. , ,

Смежные вопросы