2017-07-21 3 views
1

Ich habe einen Ordner mit vielen Unterordnern. Der Unterordner "Ease" hat unterschiedliche Arten von Dateien. Ich versuche, diese Dateien nach dem Namen des Unterordners umzubenennen, in dem sie sich befinden (es handelt sich nicht um Duplikate, da jede Datei ihre eigene Erweiterung hat). Daten sieht wie folgt aus:Python: Dateien in Unterordnern nach Unterordnernamen umbenennen

folder 
     \ sub1 
     \ sub1\file1.ext1 
     \ sub1\file2.ext2 
     . 
     . 
     . 
     \ sub2 
     \ sub2\file1.ext1 
     \ sub2\file2.ext2 

Wunsch Ausgang

folder 
    \ sub1 
    \ sub1\sub1.ext1 
    \ sub1\sub1.ext2 
    . 
    . 
    . 
    \ sub2 
    \ sub2\sub2.ext1 
    \ sub2\sub2.ext2 

` 

Mein Stück Code, das funktioniert nicht.

import os 

dir_name = os.getcwd() 

for root, dirs, files in os.walk(dir_name, topdown=False): 
    for file in files: 
     file_name = os.path.splitext(file)[0]#file name no ext 
     os.rename(os.path.splitext(file)[0], root) 

Irgendwelche Ideen? Danke.

+0

Haben Sie die von mir zur Verfügung gestellte Lösung versucht? –

Antwort

0

Sie können os.path.basename verwenden, um den Verzeichnisnamen von root abzurufen.

import os 

dir_name = os.getcwd() 

for root, dirs, files in os.walk(dir_name, topdown=False): 
    for file in files: 
     file_name = os.path.splitext(file)[0]#file name no ext 
     extension = os.path.splitext(file)[1] 
     dir_name = os.path.basename(root) 
     os.rename(root+"/"+file,root+"/"+dir_name+extension) 
+0

Vielen Dank. Das habe ich gebraucht – Nadiia