python 中的文件路径分层排序

File paths hierarchial sort in 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]