python 将svn目录转为多层json
程序员文章站
2022-07-15 13:10:03
...
例如我们获取到了一串如下的目录
st = '发布申请书20200521.xlsx 企业微信截图_1590048058237.png 测试/ 测试/20200521版本测试报告.docx 测试/20200521用户验收报告.doc 测试/产品晒单逻辑新增测试用例.xlsx 部署相关/ 部署相关/部署包/ 部署相关/部署包/interface-sync-web.war 部署相关/部署包/job-web.war 需求/ 需求/产品筛单逻辑新增优化(1).doc 需求/产品筛单逻辑新增优化.xlsx'
lines = st.split(' ')
import json
def func(line,dir_list,id_value):
# 切割,得到一个列表 dir_str
dir_str = line.split('/')
# 判断该行是否为目录
if str(dir_str[-1]) == "":
if len(dir_str) == 2:
# 该行为根目录
dir_list.append({"id":id_value,"expanded":True,"name":str(dir_str[0]),"title":str(dir_str[0]),"children":[]})
else:
i = 0
for dir_i in dir_list:
if dir_i['name'] == dir_str[0]:
line_min = '/'.join(dir_str[1:])
dir_list_min = dir_list[i]['children']
break
i += 1
# 如果多层目录,就递归
func(line_min,dir_list_min,id_value)
else:
# 处理文件
if len(dir_str) == 1:
dir_list.append({"id":id_value,"name":str(dir_str[0]),"title":str(dir_str[0])})
else:
i = 0
for dir_i in dir_list:
if dir_i['name'] == dir_str[0]:
line_min = '/'.join(dir_str[1:])
dir_list_min = dir_list[i]['children']
break
i += 1
# 如果多层目录,就递归
func(line_min,dir_list_min,id_value)
return dir_list
# 创建一个空列表
alist = []
id_value = 1
for i in lines:
alist = func(i,alist,id_value)
id_value += 1
# 结果打印
print(json.dumps(alist, ensure_ascii=False))
转化结果如下:
其中dir_list.append()的两行,为适配前端数据结构的代码,大家可以根据前端的实际需求调整该结构。