2017-07-11 7 views
0

Wie kann ich nur die Ordner leafs innerhalb des Zielverzeichnisses zurückgeben, wenn Sie os.walk in Python verwenden.Geben Sie Ordnerpfad und Dateinamen rekursiv in Python zurück

Hier ist meine Funktion:

def get_files(directory): 
    directory = os.path.abspath(directory) 
    if not os.path.isdir(directory): 
     return False 

    files = [] 
    for root, subdirs, files in os.walk(directory): 
     for f in files: 
      if not f.lower().endswith('.jpg'): 
       continue 

      print root, f 

get_files('C:/Temp') 

Welche dies zurück:

C:\Temp\images socket.jpg 
C:\Temp\images vexusrollout.jpg 
C:\Temp\newdocs\images utilityrollout.jpg 
C:\Temp\newdocs\images vexushelper.jpg 
C:\Temp\newdocs\images vexusmtl.jpg 
C:\Temp\newdocs\images vexusrollout.jpg 

ich das zurückgeben würde es vorziehen:

images socket.jpg 
images vexusrollout.jpg 
newdocs\images utilityrollout.jpg 
newdocs\images vexushelper.jpg 
newdocs\images vexusmtl.jpg 
newdocs\images vexusrollout.jpg 

Der wesentliche Unterschied zwischen, was auch immer Verzeichnis i Ziel Für das Durchschleifen möchte ich nicht, dass dieses Bit in der Ausgabe enthalten ist.

+0

Wenn Sie wissen, in welchem ​​Verzeichnis Sie durch Sie iteriert einfach die Zeichenfolge schneiden könnte: 'Druck root [9:], f' – victor

Antwort

3

ändern

print root, f 

zu

print root[len(directory)+1:], f 
Verwandte Themen