2012-09-25 14 views
7

Ich versuche, mich mit der Standardbibliothek von python vertraut zu machen und damit auf meinem Windows-Rechner herumzuexerzieren. Mit Python 2.7 habe ich das folgende kleine Skript, das in ein Verzeichnis schauen und alle darin enthaltenen Dateien umbenennen soll, nachdem Zahlen aus dem Dateinamen entfernt wurden. Ich bin ein Typeerror bekommen, die sagt, „muss Zeichenfolge ohne NULL-Bytes codiert werden, nicht str“python TypeError: muss eine codierte Zeichenkette ohne NULL Byte sein, nicht str

es ruft Linien 5 und 18, unten angegebenen, wo im os.path.exists verwenden.

Jede Hilfe würde sehr geschätzt werden!

import os, re, string, glob 

    path = os.path.normpath('C:\Users\me\Photo Projects\Project Name\Project Photos\Modified\0-PyTest') 

ln5:if os.path.exists(path): 
     print "path exists at " + path 
     for file in glob.glob(os.path.join(path, '*.jpg')): 
      new_path = os.path.join(os.path.dirname(file), re.sub('\d', '', os.path.basename(file))) 
line18:  if not os.path.exists(new_path): 
       os.rename(file, new_path) 

Antwort

1

erweist sich als das einzelne Backslash-Problem. Ich dachte os.path.normpath würde den Pfad wie vom Betriebssystem benötigt formatieren.

10

"... Fotos \ Modified \ 0-PyTest"

Sein die \ 0 als ein Null-Zeichen nehmen. Sie haben \ mit \\ zu entkommen, oder einfach nur eine r vor dem String setzen, um es roh:

r'C:\Users\me\Photo Projects\Project Name\Project Photos\Modified\0-PyTest' 
0

Wenn Sie einen Pfad URL hinzufügen geben nur r, bevor es:

(r'E: \ Images \ 1.png ')

+0

Hallo, willkommen bei SO! Diese Frage ist sehr alt und wurde bereits mit einer sehr ähnlichen Antwort beantwortet, so dass es nicht notwendig ist, sie erneut zu posten. Zweifellos werden andere Leute mit neuen Fragen Ihre Hilfe brauchen. – Tom

Verwandte Themen