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]
输入文件包含文件路径列表。建议算法进行层次结构排序输出,如下所示
输入
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]