我想存储一个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代码。
这应该很容易使用递归函数和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
它到一个字符串。 。 。
如果您碰巧使用基于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