将JSON渲染到Python中的目录结构

问题描述 投票:2回答:2

我想存储一个JSON结构,它包含我目前正在处理的项目和文件。文件结构如下所示:

|-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代码。

python json directory structure
2个回答
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它到一个字符串。 。 。


0
投票

如果您碰巧使用基于Unix的系统,则可以使用“tree”命令

$ tree -Jd . > folderTemplate.json

或者来自Python:

import subprocess
data = subprocess.run(["tree", "-Jd", "/path/to/dir"], stdout=subprocess.PIPE)
print(data.stdout)

然后用Python将其转换回目录结构会很简单。也许这可能会有所帮助:https://github.com/tmdag/makedirtree

© www.soinside.com 2019 - 2024. All rights reserved.