Wie man eine Datei in Python kopiert
-
Shutil
copyfile()
Methode zum Kopieren von Dateien in Python -
Shutil
copy()
Methode zum Kopieren von Dateien mit Berechtigungen -
Vergleich zwischen
copy()
undcopyfile()
Methode -
copyfileobj()
Methode zum Kopieren von Dateiobjekten -
copy2()
Methode zur Erhaltung von Metadaten - Schlussfolgerung der Methoden zum Kopieren einer Datei in Python
Python wird mit mehreren Out-of-Box-Modulen zur Unterstützung von Datei-E/A-Operationen (wie OS
, subprocess
und shutil
) ausgeliefert. Sie werden einfach Dateien und Verzeichnisse mit Hilfe des shutil
-Moduls kopieren. Operationen wie das Duplizieren, Übertragen oder Löschen von Dateien und Verzeichnissen werden mit dieser Utility-Funktion abgeschlossen. Hier werden vier Methoden wie folgt besprochen.
Shutil copyfile()
Methode zum Kopieren von Dateien in Python
Es kopiert das Quellmaterial in eine Datei mit dem Zielnamen. Wenn das Ziel nicht beschreibbar ist, tritt während des Kopiervorgangs eine IOError
-Ausnahme auf. Wenn die Ursprungs- und die Zieldatei gleich sind, kehrt SameFileError
zurück. Die Pfadnamen der Quell- und Zieldatei werden als Zeichenketten angegeben.
copyfile(source_file, destination_file)
Zeichen- oder Blockgeräte und die Pipes werden von dieser Methode nicht unterstützt.
import shutil
source = r"C:\Users\DelftStack\Documents\test\test.txt"
destination = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copyfile(source, destination)
Shutil copy()
Methode zum Kopieren von Dateien mit Berechtigungen
Die copy()
Methode funktioniert wie der Unix-Befehl cp
. Beim Kopieren seines Inhalts synchronisiert diese Methode die Berechtigungen der Zieldatei mit der Quelldatei. Wenn Sie die gleiche Datei kopieren, wird auch der SameFileError
ausgegeben. Seine Syntax lautet wie folgt.
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
Beispiel für Shutil copy()
Methode zum Kopieren von Dateien mit Berechtigungen
import shutil
src = r"C:\Users\DelftStack\Documents\test\test.txt"
des = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copy(src, des)
Vergleich zwischen copy()
und copyfile()
Methode
- Die Methode
copy()
setzt oft die Dateierlaubnis, wenn der Inhalt kopiert wird, während die Methodecopyfile()
nur die Daten kopiert. - Im wesentlichen verwendet die Methode
copyfile()
in ihrer Implementierung die Methodecopyfileobj()
. Im Vergleich dazu verwendet die Methodecopy()
die Funktionencopyfile()
undcopymode()
. - Der obige Punkt macht deutlich, daß
copyfile()
etwas schneller sein wird alscopy()
, weil bei letzterem eine zusätzliche Aufgabe ansteht (Erhaltung der Berechtigungen).
copyfileobj()
Methode zum Kopieren von Dateiobjekten
Diese Funktion kopiert die Datei in das Objekt des Zielpfades oder der Zieldatei. Wenn das Zielobjekt ein Dateiobjekt ist, müssen Sie es nach dem direkten Aufruf von copyfileobj()
schließen. Die Puffergröße wird verwendet, um die Länge des Puffers anzugeben. Sie ist die Anzahl der Bytes, die während des Kopiervorgangs im Speicher gehalten werden.
Die Syntax der copyfileobj()
Methode ist nachfolgend beschrieben.
shutil.copyfileobj(src_file_object, dest_file_object[, length])
import shutil
filename1 = r"C:\Users\DelftStack\Documents\test\test.txt"
fileA = open(filename1, "rb")
filename2 = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
fileB = open(filename2, "wb")
shutil.copyfileobj(fileA, fileB)
copy2()
Methode zur Erhaltung von Metadaten
Die copy2()
Methode ist ähnlich der copy()
Methode, aber zusätzlich zum Kopieren des Dateiinhalts werden auch alle Metadaten der Quelldatei erhalten.
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
import shutil
src = r"C:\Users\DelftStack\Documents\test\test.txt"
des = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copy2(src, des)
Schlussfolgerung der Methoden zum Kopieren einer Datei in Python
Am Ende wird eine Tabelle für alle Methoden beigefügt, die dazu beiträgt, den Nutzen von shutil
besser zu verstehen.
Funktion | kopiert Metadaten | Genehmigungen für Kopien | kann Puffer verwenden | Ziel kann Verzeichnis sein |
---|---|---|---|---|
shutil.copy |
Nein | Ja | Nein | Ja |
shutil.copyfile |
Nein | Nein | Nein | Nein |
shutil.copy2 |
Ja | Ja | Nein | Ja |
shutil.copyfileobj |
Nein | Nein | Ja | Nein |
Verwandter Artikel - Python File
- So erhalten Sie alle Dateien eines Verzeichnisses
- Wie man in Python Text an eine Datei anhängt
- Wie man prüft, ob eine Datei in Python existiert
- Wie man Dateien mit einer bestimmten Endung nur in Python findet
- Wie man bestimmte Zeilen aus einer Datei in Python liest
- Dateiberechtigungen in Python ändern