2016-07-28 29 views
-1

Ich möchte Bilddateien in großen Mengen umbenennen und ihnen Namen wie 1.jpg, 2.jpg und so weiter geben. Es funktioniert gut, wenn ich es das erste Mal mache. Aber sobald ich eine neue Datei mit einem anderen Namen wie abc.jpg kopiere, verhält sich das Programm merkwürdig, manchmal lasse ich die Datei abc.jpg so wie sie ist, während ich sie zu anderen Zeiten umbenenne, wie ich will, aber eine andere Datei mit einem andere Nummer.Batch umbenennen in Python

Hier ist ein Teil des Codes:

i = 1 
if(os.path.exists(path)): 
    for file in os.listdir(path): 
     new_file = str(i) + '.jpg' 
     if os.path.isfile(os.path.join(path, new_file)): 
      print new_file + ' already renamed' 
     else: 
      os.rename(os.path.join(path, file), os.path.join(path, new_file)) 
     i += 1 
    print "Renaming successful!" 
else: 
    print "Folder does not exist!" 

Bitte helfen Sie mir mit diesem!

+0

Also, was ist die Frage? In Ihrer Code-Logik: Wenn der neue Dateiname bereits existiert, dann druckt Ihr Code nur die Nachricht und tut nichts - vielleicht wollten Sie dort etwas machen? Sonst bleibt der Dateiname so wie er ist. – Wajahat

+0

Was passiert ist, dass es manchmal _abc.jpg bereits umbenannt druckt. Und manchmal benennt es es um, aber eine andere Datei bekommt einen neuen Namen, d. H. Es gibt eine Namensunterbrechung. –

Antwort

0

versuchen Sie das, es hat für mich funktioniert. Sie können eine if-Anweisung hinzufügen, um zu überprüfen, ob der Ordner existiert, wenn Sie möchten. -

import os 

    sourcepath = 'D:\Pictures' 
    path = os.listdir(sourcepath) 

    i = 1 

    for files in path: 
     if not os.path.isfile(os.path.join(sourcepath, files)): 
      continue 
     new_file = str(i)+'.jpg' 
     try: 
      os.rename(os.path.join(sourcepath, files), os.path.join(sourcepath, new_file)) 
      i += 1 
     except: 
      print 'Error' 
+0

Es funktioniert nicht. Ich habe eine neue Datei mit einem anderen Namen kopiert, aber die Datei blieb so wie sie war, als das Programm ausgeführt wurde. –