Ich möchte ändern a.txt
zu b.kml
.
python
file-rename
zjm1126
quelle
quelle
C:/folder/file.txt
unter Windows oder/home/file.txt
unter Linux / MacOS).OSError
auf Windows -Systemen jedoch fehlschlägt .os.path.exists
sollte verwendet werden, um vor dem Umbenennen zu überprüfen, ob das Ziel vorhanden ist. Dies führt zwar zu einem Fehler "Time Of Check to Time Of Use", es ist jedoch unwahrscheinlich, dass Probleme auftreten. (Ich kenne keinen einfachen Weg, um das zuos.replace
Die Datei befindet sich möglicherweise in einem Verzeichnis. Geben Sie in diesem Fall den Pfad an:
quelle
Dies funktioniert, um eine Datei umzubenennen oder zu verschieben.
quelle
shutil.move
ist keine gute Option, da es sich nicht um eine atomare Operation handelt. Wenn die Datei geöffnet ist,shutil.move
wird beispielsweise eine Datei mit erstelltnew_name
, die Datei jedoch nicht gelöscht,old_name
sodass Sie zwei Dateien erhalten.os.rename
auf der anderen Seite wird nichts tun, was eine bessere Option ist . Mitshutil.move
, auch wenn Sie den Fehler erwischt, würden Sie immer noch Sorgen machen über die Überprüfung und das Löschen der Rogue - Datei. Nur nicht wert, wenn es ein besseres Werkzeug gibt :os.rename
.Ab Python 3.4 kann man das pathlib- Modul verwenden, um dies zu lösen.
Wenn Sie auf einer älteren Version geschehen sein, können Sie die zurückportierte Version verwenden gefunden hier
Nehmen wir an, Sie befinden sich nicht im Stammpfad (nur um ein wenig Schwierigkeit hinzuzufügen), den Sie umbenennen möchten, und müssen einen vollständigen Pfad angeben. Wir können uns Folgendes ansehen:
So können Sie Ihren Weg nehmen und daraus ein
Path
Objekt erstellen :Um einige Informationen zu diesem Objekt bereitzustellen, das wir jetzt haben, können wir Dinge daraus extrahieren. Wenn wir beispielsweise aus irgendeinem Grund die Datei umbenennen möchten, indem wir den Dateinamen von
the_file
in ändernthe_file_1
, können wir den Dateinamen-Teil abrufen:Und halten Sie die Erweiterung auch noch in der Hand:
Wir können unsere Modifikation mit einer einfachen String-Manipulation durchführen:
Python 3.6 und höher verwenden F-Strings!
Andernfalls:
Und jetzt können wir unsere Umbenennung durchführen, indem wir die
rename
Methode für das von uns erstellte Pfadobjekt aufrufen und die anhängenext
, um die gewünschte Umbenennungsstruktur zu vervollständigen:In Kürze, um seine Einfachheit zu demonstrieren:
Python 3.6+:
Versionen unter Python 3.6 verwenden stattdessen die String-Format-Methode:
quelle
pathlib
Bibliothek in Python 3.4 eingeführt, sodass das Teilen der Antwort hier auch ein solides Modul zur Verfügung stellt, um seine Vielseitigkeit und Verwendung für kompliziertere Anforderungen zu demonstrieren.{}
sind für die Formatierung von Zeichenfolgen, über die Sie hier lesen können . Letztendlich passiert, dass das{}
Get durch die Variablen ersetzt wird, die an dieformat
Methode übergeben werden. Das erste{}
wird also das enthalten, was drin istname_without_extension
, und das zweite wird das zweite Argument enthalten, das einfach ist1
.os.rename(old, new)
Dies finden Sie in den Python-Dokumenten: http://docs.python.org/library/os.html
quelle
Verwenden Sie
os.rename
. Sie müssen jedoch den vollständigen Pfad beider Dateien an die Funktion übergeben. Wenn ich eine Dateia.txt
auf meinem Desktop habe, werde ich das auch tun und ich muss auch voll umbenannte Datei geben.quelle
quelle
chdir()
in ein Verzeichnis wechseln, z. B. was passiert unter Windows, wenn es sich um ein UNC handelt? Und a zu tunchdir()
hat Nebenwirkungen. Ich würde lieber nur die notwendigen Pfadeos.rename()
direkt angeben , neinchdir()
ing.Sie können os.system verwenden, um das Terminal aufzurufen, um die Aufgabe auszuführen:
quelle
mv
wie ein in Unix integriertes Befehlszeilenprogramm zum Verschieben / Umbenennen einer Datei.quelle
os.path
mit modernem Stilpathlib
ist ziemlich zweifelhaft. Gehen Siepathlib
stattdessen den ganzen Weg mit .Das sollte es tun. Python 3+
quelle