python中的文件路径分层排序



输入文件包含文件路径列表。 建议算法做层次结构排序输出,如下所示

输入

A/file1
A/B/C/D/file3
A/B/file1
A/B/file2
A/B/C/D/file1
A/file2
A/W/X/Y/Z/file1
A/W/file1
A/W/X/file1
A/file3
A/B/C/file1
A/W/X/Y/file1
A/B/file2

预期产出

A/file1
A/file2
A/file3
A/B/file1
A/B/file2
A/B/C/file1
A/B/C/D/file1
A/B/C/D/file3

A/W/file1
A/W/X/file1
A/W/X/Y/file1
A/W/X/Y/Z/file1

尝试像下面这样编码,结果没有按预期出现

import sys,os
d1,d2 = '',''
l1 = [ x for x in open(sys.argv[1])]
s2 = sorted(l1,key = lambda x : len(x.split('/')))
for linE in s2:
    f1 = linE.strip('n')
    d1 = os.path.dirname(f1)
    if d1 != d2 : print
    d2 = d1
    print linE,

电流输出

A/file1
A/file2
A/file3
A/B/file1
A/B/file2
A/W/file1
A/B/file2
A/W/X/file1
A/B/C/file1
A/B/C/D/file3
A/B/C/D/file1
A/W/X/Y/file1
A/W/X/Y/Z/file1

请帮助我使用算法来做同样的事情

str = """A/file1
A/B/C/D/file3
A/B/file1
A/B/file2
A/B/C/D/file1
A/file2
A/W/X/Y/Z/file1
A/W/file1
A/W/X/file1
A/file3
A/B/C/file1
A/W/X/Y/file1
A/B/file2"""
import string
files = string.split(str, "n")
import os.path
std = sorted(files, key=lambda file: (os.path.dirname(file), os.path.basename(file)))
print std[0]
for i in range(1,len(std)):
    if os.path.dirname(std[i]) != os.path.dirname(std[i-1]):
        print ""
    print std[i]

最新更新