python中的文件路径层次排序

use*_*191 6 python sorting file hierarchy

输入文件包含文件路径列表.建议算法做下面的层次排序输出

输入

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
Run Code Online (Sandbox Code Playgroud)

预期产出

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
Run Code Online (Sandbox Code Playgroud)

尝试编码如下,结果没有按预期进行

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,
Run Code Online (Sandbox Code Playgroud)

电流输出

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
Run Code Online (Sandbox Code Playgroud)

请帮我一个算法来做同样的事情

Ami*_*pta 7

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]
Run Code Online (Sandbox Code Playgroud)