How to convert a file path into treeview?

我与影子孤独终老i 提交于 2019-12-12 06:20:07

问题


Right now I have a few files in python that have following file path format:

a/b/c/d/e/file1
a/b/c/d/e/file2
a/f/g/h/i/file3
a/f/g/h/i/file4

Now, when I fetch these paths in Python, I want to turn this into a JSON format that a third party jquery plugin (e.g. fancytree, jqxTree) can read in order to convert it into a treeview. Maybe there are other easier ways to do it, please suggest. Thanks!


回答1:


From Python, you can generate the JSON you want as follows (note that the indent and sort aren't necessary if you're just shipping the JSON across the line, but they make the output readable for debugging):

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=(',', ': ')))

This code generates the following output:

{
    "a": {
        "b": {
            "c": {
                "d": {
                    "e": {
                        "file1": {},
                        "file2": {}
                    }
                }
            }
        },
        "f": {
            "g": {
                "h": {
                    "i": {
                        "file3": {},
                        "file4": {}
                    }
                }
            }
        }
    }
}


来源:https://stackoverflow.com/questions/31844499/how-to-convert-a-file-path-into-treeview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!