Ich schrieb ein kleines Programm, das alle Dateien mit gegebenem Präfix, sagen wir 'spam'
für dieses Beispiel, in einem Ordner findet und Lücken in der Nummerierung findet und nachfolgende Ordner umbenennt, um die Lücke zu füllen. Im Folgenden zeigt ein Teil des Programms, das die Dateien mit einem regex und benennt sie lokalisiert:Regex und Umbenennen Dateifehler
prefix = 'spam'
newNumber = 005
# Regex for finding files with specified prefix + any numbering + any file extension
prefixRegex = re.compile(r'(%s)((\d)+)(\.[a-zA-Z0-9]+)' % prefix)
# Rename file by keeping group 1 (prefix) and group 4 (file extension),
# but substituting numbering with newNumber
newFileName = prefixRegex.sub(r'\1%s\4' % newNumber, 'spam006.txt')
Was ich von oben spam005.txt
war erwartet wurde, aber stattdessen habe ich @5.txt
ich mich r'%s%s\4' % (prefix, newNumber)
heraus verwenden könnte Stattdessen und dann funktioniert es wie beabsichtigt, aber ich würde gerne verstehen, warum dieser Fehler passiert. Hat es etwas mit der %s
zu tun, die während re.compile()
verwendet wird?