2015-04-19 75 views
5

Il file di input contiene l'elenco dei percorsi dei file. suggerire algoritmo per fare uscita sorta gerarchia come qui di seguitoOrdinamento gerarchico dei percorsi dei file in python

ingresso

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 

uscita prevista

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 

cercato di codifica come qui di seguito, risultato non è venuta come previsto

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, 

Uscita di corrente

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 

please help me con un algoritmo per fare lo stesso

+0

Puoi spiegare meglio il tipo si sta cercando di applicare? Il tuo output previsto non mostra una regola chiara. – jwilner

risposta

5
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] 
+0

Grazie Amit..Molto pensiero .. funziona !! :) – user1228191