如何将文件路径转换为树视图?
How to convert a file path into treeview?
现在我在 python 中有一些文件具有以下文件路径格式:
a/b/c/d/e/file1
a/b/c/d/e/file2
a/f/g/h/i/file3
a/f/g/h/i/file4
现在,当我在 Python 中获取这些路径时,我想将其转换为第三方 jquery 插件(例如 fancytree、jqxTree)可以读取的 JSON 格式为了将其转换为树视图。也许还有其他更简单的方法可以做到这一点,请提出建议。谢谢!
从 Python,您可以按如下方式生成您想要的 JSON(请注意,如果您只是将 JSON行,但它们使输出可读以进行调试):
import collections
import json
myfiles = '''
a/b/c/d/e/file1
a/b/c/d/e/file2
a/f/g/h/i/file3
a/f/g/h/i/file4
'''
# Convert to a list
myfiles = myfiles.split()
def recursive_dict():
"""
This function returns a defaultdict() object
that will always return new defaultdict() objects
as the values for any non-existent dict keys.
Those new defaultdict() objects will likewise
return new defaultdict() objects as the values
for non-existent keys, ad infinitum.
"""
return collections.defaultdict(recursive_dict)
def insert_file(mydict, fname):
for part in fname.split('/'):
mydict = mydict[part]
# If you want to record that this was a terminal,
# you can do something like this, too:
# mydict[None] = True
topdict = recursive_dict()
for fname in myfiles:
insert_file(topdict, fname)
print(json.dumps(topdict, sort_keys=True,
indent=4, separators=(',', ': ')))
此代码生成以下输出:
{
"a": {
"b": {
"c": {
"d": {
"e": {
"file1": {},
"file2": {}
}
}
}
},
"f": {
"g": {
"h": {
"i": {
"file3": {},
"file4": {}
}
}
}
}
}
}
现在我在 python 中有一些文件具有以下文件路径格式:
a/b/c/d/e/file1
a/b/c/d/e/file2
a/f/g/h/i/file3
a/f/g/h/i/file4
现在,当我在 Python 中获取这些路径时,我想将其转换为第三方 jquery 插件(例如 fancytree、jqxTree)可以读取的 JSON 格式为了将其转换为树视图。也许还有其他更简单的方法可以做到这一点,请提出建议。谢谢!
从 Python,您可以按如下方式生成您想要的 JSON(请注意,如果您只是将 JSON行,但它们使输出可读以进行调试):
import collections
import json
myfiles = '''
a/b/c/d/e/file1
a/b/c/d/e/file2
a/f/g/h/i/file3
a/f/g/h/i/file4
'''
# Convert to a list
myfiles = myfiles.split()
def recursive_dict():
"""
This function returns a defaultdict() object
that will always return new defaultdict() objects
as the values for any non-existent dict keys.
Those new defaultdict() objects will likewise
return new defaultdict() objects as the values
for non-existent keys, ad infinitum.
"""
return collections.defaultdict(recursive_dict)
def insert_file(mydict, fname):
for part in fname.split('/'):
mydict = mydict[part]
# If you want to record that this was a terminal,
# you can do something like this, too:
# mydict[None] = True
topdict = recursive_dict()
for fname in myfiles:
insert_file(topdict, fname)
print(json.dumps(topdict, sort_keys=True,
indent=4, separators=(',', ': ')))
此代码生成以下输出:
{
"a": {
"b": {
"c": {
"d": {
"e": {
"file1": {},
"file2": {}
}
}
}
},
"f": {
"g": {
"h": {
"i": {
"file3": {},
"file4": {}
}
}
}
}
}
}