batch-umbenennen von 100K-Dateien mit python

Ich habe einen Ordner mit über 100.000 Dateien, alle nummeriert mit den gleichen Stummel, aber ohne führende Nullen und die zahlen sind nicht immer zusammenhängend (Sie sind in der Regel, aber es gibt Lücken) e.g:

file-21.png, 
file-22.png,  
file-640.png, 
file-641.png, 
file-642.png, 
file-645.png, 
file-2130.png, 
file-2131.png, 
file-3012.png, 

etc.

Ich würde gerne batch-Prozess erstellen gepolsterte, zusammenhängenden Dateien. e.g:

file-000000.png, 
file-000001.png, 
file-000002.png, 
file-000003.png, 

Wenn ich parse den Ordner mit for filename in os.listdir('.'): die Dateien nicht in der Reihenfolge möchte ich Ihnen an. Verständlicherweise kommen Sie

 file-1, 
 file-1x, 
 file-1xx, 
 file-1xxx,

etc. dann

 file-2, 
 file-2x, 
 file-2xx, 

etc. Wie kann ich es bekommen, um durch zu gehen in der Reihenfolge der numerische Wert? Ich bin ein absoluter python noob, aber ein Blick in die docs, die ich vermute, könnte ich die Karte verwenden, um eine neue Liste erstellen, filtern Sie nur den numerischen Teil, und Sortieren Sie anschließend die Liste, iteriere das? Mit über 100K Dateien könnte dies schwer. Irgendwelche Tipps sind willkommen!

  • Sie können ein linux-Kommando "ls" mit einer beliebigen Anzahl von Parametern zu Sortieren, wie Sie wollen... und dann diese Liste verwenden, um auf die Dateien.
  • Ja, wenn ich das machen würde, würde ich nur verwenden sort -n.
  • Anstelle der Bearbeitung Ihrer Frage mit der Antwort, ist es besser, einfach posten Sie Ihre Lösung als seine eigene Antwort unten, und markieren Sie Sie als angenommen.
InformationsquelleAutor memo | 2010-06-20
Schreibe einen Kommentar