Wie man eine Datei in Python kopiert

Azaz Farooq 21 März 2022
  1. Shutil copyfile() Methode zum Kopieren von Dateien in Python
  2. Shutil copy() Methode zum Kopieren von Dateien mit Berechtigungen
  3. Vergleich zwischen copy() und copyfile() Methode
  4. copyfileobj() Methode zum Kopieren von Dateiobjekten
  5. copy2() Methode zur Erhaltung von Metadaten
  6. Schlussfolgerung der Methoden zum Kopieren einer Datei in Python
Wie man eine Datei in Python kopiert

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

  1. Die Methode copy() setzt oft die Dateierlaubnis, wenn der Inhalt kopiert wird, während die Methode copyfile() nur die Daten kopiert.
  2. Im wesentlichen verwendet die Methode copyfile() in ihrer Implementierung die Methode copyfileobj(). Im Vergleich dazu verwendet die Methode copy() die Funktionen copyfile() und copymode().
  3. Der obige Punkt macht deutlich, daß copyfile() etwas schneller sein wird als copy(), 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