python - convert file path list to tree -
there python file path list below:
file_path_list = ["test/dir1/log.txt", "test/dir1/dir2/server.txt", "test/manage/img.txt"]
i want convert tree. expect result below:
tree_data = [ { "path": "test", "children": [ { "path": "dir1", "children": [ { "path": "log.txt" }, { "path": "dir2", "children": [ { "path": "server.txt" } ] } ] }, { "path": "manage", "children": [ { "path": "img.txt", } ] } ] } ]
what's best way convert?
update: code below, think it's not well.
def list2tree(file_path): """convert list tree.""" tree_data = [{ "path": "root", "children": [] }] f in file_path: node_path = tree_data[0] pathes = f.split("/") i, p in enumerate(pathes): length = len(node_path["children"]) if not length or node_path["children"][length - 1]["path"] != p: # create new node new_node = { "path": p, } if != len(pathes) - 1: # middle path new_node["children"] = list() node_path["children"].append(new_node) node_path = new_node else: node_path = node_path["children"][length - 1] return tree_data
i think way not best. ideas? thank much!
one way split strings @ '/' , put them in defaultdict of defaultdicts, see defaultdict of defaultdict, nested.
Comments
Post a Comment