Ein solches Umbenennen ist beispielsweise mit OS- und Glob- Modulen recht einfach :
import glob, os
def rename(dir, pattern, titlePattern):
for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
os.rename(pathAndFilename,
os.path.join(dir, titlePattern % title + ext))
Sie können es dann in Ihrem Beispiel folgendermaßen verwenden:
rename(r'c:\temp\xx', r'*.doc', r'new(%s)')
Im obigen Beispiel werden alle *.doc
Dateien im c:\temp\xx
Verzeichnis in konvertiert new(%s).doc
, wobei %s
der vorherige Basisname der Datei (ohne Erweiterung) angegeben ist.
%
Symbol im Befehl verwendetos.path.join(dir, titlePattern % title + ext)
? Ich weiß,%
ist für den Modulo-Betrieb und wird auch als Formatierungsoperator verwendet. In der Regel folgt jedoch dass
oderf
, um das Format anzugeben. Warum ist nichts (Leerzeichen) unmittelbar danach%
in dem genannten Befehl?Ich schreibe lieber kleine Einzeiler für jeden Ersatz, den ich machen muss, anstatt einen allgemeineren und komplexeren Code zu erstellen. Z.B:
Dies ersetzt alle Unterstriche durch Bindestriche in nicht versteckten Dateien im aktuellen Verzeichnis
quelle
rename
no such file error
nur daran denken,os.rename
brauchen Sie vollen WegWenn es Ihnen nichts ausmacht, reguläre Ausdrücke zu verwenden, können Sie mit dieser Funktion Dateien umbenennen:
In Ihrem Beispiel könnten Sie also Folgendes tun (vorausgesetzt, es ist das aktuelle Verzeichnis, in dem sich die Dateien befinden):
Sie können aber auch zu den ursprünglichen Dateinamen zurückkehren:
und mehr.
quelle
Ich habe dies, um einfach alle Dateien in Unterordnern des Ordners umzubenennen
Ich ersetze alle Vorkommen von old_str durch new_str.
quelle
Versuchen Sie: http://www.mattweber.org/2007/03/04/python-script-renamepy/
Der Quellcode des Programms ist ebenfalls verfügbar.
quelle
Ich habe selbst ein Python-Skript geschrieben. Als Argumente werden der Pfad des Verzeichnisses verwendet, in dem sich die Dateien befinden, und das Namensmuster, das Sie verwenden möchten. Die Umbenennung erfolgt jedoch durch Anhängen einer inkrementellen Nummer (1, 2, 3 usw.) an das von Ihnen angegebene Namensmuster.
Hoffe das funktioniert bei dir.
quelle
quelle
os.chdir(path_of_directory)
quelle
Ich hatte ein ähnliches Problem, wollte aber Text an den Anfang des Dateinamens aller Dateien in einem Verzeichnis anhängen und verwendete eine ähnliche Methode. Siehe Beispiel unten:
quelle
In meinem Verzeichnis habe ich mehrere Unterverzeichnisse. Jedes Unterverzeichnis enthält viele Bilder. Ich möchte alle Unterverzeichnisbilder in 1.jpg ~ n.jpg ändern
(meine eigene Antwort) https://stackoverflow.com/a/45734381/6329006
quelle
quelle
Wenn Sie Dateinamen in einem Editor (z. B. vim) ändern möchten, enthält die Klickbibliothek den Befehl
click.edit()
, mit dem Benutzereingaben von einem Editor empfangen werden können. Hier ist ein Beispiel dafür, wie Dateien in einem Verzeichnis umgestaltet werden können.Ich habe eine Befehlszeilenanwendung geschrieben, die dieselbe Technik verwendet, aber die Volatilität dieses Skripts verringert und mehr Optionen bietet, z. B. rekursives Refactoring. Hier ist der Link zur Github-Seite . Dies ist nützlich, wenn Sie Befehlszeilenanwendungen mögen und schnell Änderungen an Dateinamen vornehmen möchten. (Meine Anwendung ähnelt dem Befehl "Massenname" in Ranger ).
quelle
Dieser Code wird funktionieren
Die Funktion verwendet genau zwei Argumente f_patth als Pfad zum Umbenennen der Datei und new_name als neuen Namen für die Datei.
quelle