【发布时间】:2020-04-30 19:38:24
【问题描述】:
我正在寻找一种方法来识别最顶层目录中的 dist.xml 文件。
例如,我有这个目录列表,
/opt/pictures/dist.xml
/opt/docs_old/dist.xml
/opt/public/dist.xml
/opt/documents/server/dist.xml
/opt/documents/dist.xml
/opt/documents/web/dist.xml
/opt/documents/class/dist.xml
/opt/documents/lessons/1/dist.xml
/opt/documents/lessons/2/dist.xml
/opt/documents/lessons/3/dist.xml
/opt/documents/lessons/4/dist.xml
/opt/documents/lessons/5/dist.xml
/opt/music/service/day/dist.xml
/opt/music/service/week/dist.xml
/opt/music/service/month/dist.xml
/opt/music/service/month/1/dist.xml
/opt/music/service/month/2/dist.xml
我正在寻找这个输出,
/opt/pictures/dist.xml
/opt/docs_old/dist.xml
/opt/public/dist.xml
/opt/documents/dist.xml
/opt/music/service/day/dist.xml
/opt/music/service/week/dist.xml
/opt/music/service/month/dist.xml
我有以下代码似乎可以完成这项工作,想知道是否有任何方法可以加快或清除代码,
from pathlib import Path
paths = ['/opt/pictures/dist.xml', '/opt/docs_old/dist.xml', '/opt/public/dist.xml', '/opt/documents/server/dist.xml', '/opt/documents/dist.xml', '/opt/documents/web/dist.xml', '/opt/documents/class/dist.xml', '/opt/documents/lessons/1/dist.xml', '/opt/documents/lessons/2/dist.xml', '/opt/documents/lessons/3/dist.xml', '/opt/documents/lessons/4/dist.xml', '/opt/documents/lessons/5/dist.xml', '/opt/music/service/day/dist.xml', '/opt/music/service/week/dist.xml', '/opt/music/service/month/dist.xml', '/opt/music/service/month/1/dist.xml', '/opt/music/service/month/2/dist.xml']
paths = list(set(paths))
paths_folder = [str(Path(p).parent) for p in paths]
to_remove = []
for idx, val in enumerate(paths_folder):
for b in Path(val).parents:
if str(b) in paths_folder:
to_remove.append(idx)
paths_folder = [i for j, i in enumerate(paths_folder) if j not in to_remove]
paths_folder = [p + '/dist.xml' for p in paths_folder]
print(paths_folder)
【问题讨论】:
-
想要的输出 不是对实际输出的不同排序。你的头衔是什么意思?
-
另外,您能否用文字解释从输入中获取输出的基本原理是什么?
标签: python python-3.x algorithm sorting