- 根据实际需要修改了代码,只保留了目录,排除了文件,通过os.path.isdir
- 排除了~和.开头的目录,通过 os.path.basename(os.path.join(path, x))[0] not in [“~”, “.”]]
- node2是json格式,通过json.dumps,ensure_ascii=False可正常显示中文路径
import os
import json
path = 'Q:\xxxxxx\SVN'
def path_to_dict(path):
item = os.path.basename(path)
d = {'name': item, 'children': [path_to_dict(os.path.join(path, x)) for x in os.listdir(path) if
os.path.isdir(os.path.join(path, x)) and os.path.basename(os.path.join(path, x))[
0] not in ["~", "."]]}
return d
node = path_to_dict(path)
node2 = json.dumps(path_to_dict(path),ensure_ascii=False, indent=2)
print(node,node2)
运行结果:
#node
{'name': 'SVN', 'children': [{'name': '模板', 'children': [{'name': 'dir2', 'children': [{'name': 'dir3', 'children': []}]}]}]}
#node2
{
"name": "SVN",
"children": [
{
"name": "模板",
"children": [
{
"name": "dir2",
"children": [
{
"name": "dir3",
"children": []
}
]
}
]
}
]
}
如果不需要排除文件,
参考:https://blog.csdn.net/weixin_34194359/article/details/94531403
stackoverflow参考链接



