Seite 1 von 1

Liste von Bildern umbenennen

Verfasst: Dienstag 20. November 2007, 16:06
von meneliel
Also ich habe eine lange Liste von Bildern, die ich gerne automatisch umbenennen würde, dabei reicht es mir aber dass die alle Nummern bekommen.

Hab dazu folgendes Script gemacht:

Code: Alles auswählen

import os, os.path
path_pics = ***************


li = os.listdir(path_pics)
i = 1
for pic in li:
  os.rename(os.path.join(path_pics,pic), os.path.join(path_pics,"%s.jpg")) %(str(i))
  i += 1

Geht aber nicht.

Code: Alles auswählen

TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'
:( was mach ich verkehrt?

Verfasst: Dienstag 20. November 2007, 16:12
von Rebecca
Die Klammerung ist falsch, so geht es:

Code: Alles auswählen

os.rename(os.path.join(path_pics,pic), os.path.join(path_pics,"%s.jpg" %(str(i))))
(Hausaufgabe: verstehen, wie die Fehlermeldung zustande kommt :))

Den expliziten Aufruf von str kannst du dir uebrigens sparen (und damit auch noch ein paar Klammern).

Verfasst: Dienstag 20. November 2007, 16:15
von CM
Tipp: Schau mal wie Deine Klammern stehen. Worauf wendest Du '%' an?

edit: Viel zu langsam ...

Verfasst: Dienstag 20. November 2007, 16:23
von meneliel
achso ... das %i muss noch mit IN die Klammer.

Ja ich ha die Fehlermeldung leider nur halb verstanden, und wusste aber dort nicht genau wo der Fehler lag.

Das mit dem str(i) hatte ich nur gemacht, weil es vorher halt auch nicht ging ... lag ja aber nun an den klammern .... *lalalala*


Danke. Wieder was gelernt.

Verfasst: Dienstag 20. November 2007, 17:25
von BlackJack
Besser als '%s.jpg' ist vielleicht '%04d.jpg', dann sind die Zahlen alle vier Zeichen lang mit führenden 0en. Dann werden die Dateien alphabetisch richtig sortiert. Falls es mehr als 10000 Dateien sind, dann muss man natürlich mehr als 4 Stellen nehmen.