Datei kopieren in Python: Shutil.copy(), Shutil.copystat() Methode

⚡ Intelligente Zusammenfassung

Python Dateien werden mit dem Shutil-Modul kopiert. `shutil.copy()` dupliziert den Inhalt einer Datei, während `shutil.copystat()` zusätzlich Berechtigungen, Änderungszeit und Metadaten kopiert. Hier lernen Sie beide Methoden anhand eines Beispiels Schritt für Schritt kennen.

  • 📋 shutil.copy(): shutil.copy(src, dst) kopiert den Inhalt einer Datei an ein neues Ziel.
  • 🗂️ shutil.copystat(): shutil.copystat(src, dst) kopiert auch Berechtigungen, Zeit und Metadaten.
  • 🤖 KI-Hilfe: KI-Tools wie Copilot generieren sofort Shutil-Kopiercode.

Datei kopieren in Python

Python Methoden zum Kopieren von Dateien

Python bietet integrierte Funktionen zum einfachen Kopieren von Dateien mithilfe der Operating System Shell-Dienstprogramme.

Der folgende Befehl wird zum Kopieren von Dateien verwendet

shutil.copy(src,dst)

Der folgende Befehl wird zum Kopieren von Dateien mit Metadateninformationen verwendet

shutil.copystat(src,dst)

So kopieren Sie eine Datei in Python

Hier sind die Schritte zum Kopieren der Datei in Python mit der Shutil copy()-Methode:

Schritt 1) Erfassen Sie den ursprünglichen Pfad im aktuellen Verzeichnis
Bevor wir eine Datei kopieren, müssen wir den Pfad zur Originaldatei im aktuellen Verzeichnis ermitteln. Im Code –

  1. Variable deklarieren
  2. Anwenden der Split-Funktion auf eine Variable

Kopieren einer Datei in Python

Code Erläuterung

  • Zuerst überprüfen wir, ob unsere Datei „guru99.txt“ existiert oder nicht. Da wir die Datei guru99.txt zuvor erstellt haben, wissen wir, dass sie existiert, und werden mit dem Code fortfahren
  • Wir speichern den Dateipfad in der Variablen „src” wenn Ihre Datei existiert
  • Sobald wir den Pfad ermittelt haben, trennen wir den Pfad und den Dateinamen
  • Dafür werden wir den Split nutzen path.split Funktion auf Quellvariable
  • Code Bei der Ausführung wird Folgendes ausgegeben:Dateiname" und "Dateipfad” separat

Schritt 2) Erstellen Sie eine Kopie unserer vorhandenen Datei mit dem Shutil-Modul
Wir verwenden das Shutil-Modul, um eine Kopie der vorhandenen Datei zu erstellen. Hier haben wir eine Kopie unserer bestehenden Datei „guru99.txt“ erstellt.

Kopieren einer Datei in Python

Code Erläuterung

  • Nehmen Sie den ursprünglichen Dateinamen „guru99.txt“ und fügen Sie am Ende „guru99.txt.bak“ die Buchstaben .bak hinzu. Dieser Name mit der Erweiterung .bak wird unser Duplikat sein
  • Und dann verwenden wir die Kopierfunktion des Dienstprogramms, um von der Quelle zum Ziel zu kopieren
  • Wenn Sie den Code ausführen, sehen Sie, dass auf der rechten Seite des Bedienfelds eine doppelte Datei mit der Erweiterung .bak erstellt wird

Schritt 3) Kopieren Sie mit der Datei verknüpfte Metadaten, Dateiberechtigungen und andere Informationen
Die Kopierfunktion kopiert nur den Inhalt der Datei, jedoch keine anderen Informationen. Kopieren Metadaten im Zusammenhang mit der Datei, Dateiberechtigung und anderen Informationen, die Sie verwenden müssen“copystat” Funktion. Bevor wir diesen Code ausführen, müssen wir unsere Kopierdatei „guru99.text.bak“ löschen.

Kopieren einer Datei in Python

Sobald Sie die Datei gelöscht und das Programm ausgeführt haben, wird eine Kopie Ihrer TXT-Datei erstellt, dieses Mal jedoch mit allen Informationen wie Dateiberechtigung, Änderungszeit und Metadateninformationen. Sie können zu Ihrer Betriebssystem-Shell gehen, um die Informationen zu überprüfen.

Kopieren einer Datei in Python

Hier ist der Code

import os
import shutil
from os import path

def main():
    # make a duplicate of an existing file
	if path.exists("guru99.txt"):
    # get the path to the file in the current directory
        src = path.realpath("guru99.txt");
    
	#seperate the path from the filter
	head, tail = path.split(src)
	print("path:" +head)
	print("file:" +tail)
	
	#let's make a backup copy by appending "bak" to the name
	dst = src+".bak"
	# nowuse the shell to make a copy of the file
	shutil.copy(src, dst)
	
	#copy over the permissions,modification
	shutil.copystat(src,dst)
	
if __name__=="__main__":
	main()

Schritt 4) Holen Sie sich die Informationen
Sie können die Informationen über die zuletzt geänderte Textdatei abrufen

Kopieren einer Datei in Python

  • Code Zeile 15 – Sie gibt Tag, Datum, Monat, Jahr und Uhrzeit der letzten Änderung der .txt-Datei (guru99) an. Wir verwenden das Modul „path“, um die Details zur Änderungszeit der Datei zu erhalten, und werden dann … Zeitklassen c Zeitfunktion um das in eine lesbare Zeit umzuwandeln. Wenn wir also den Code ausführen, können wir sehen, dass die Datei guru99.txt zuletzt geändert wurde am Mo, 8. Januarth um 13:35 Uhr 2018.
  • Code Zeile 17 – Sie liefert dieselben Informationen über Dateimodifikationen, verwendet aber ein anderes Format. Hier verwenden wir Funktion „Änderungszeit abrufen“. (path.getmtime („guru99.txt“)). Anstatt die c-Zeitfunktion zu verwenden, verwenden wir jetzt Von der Zeitstempelfunktion und werde ein Datum-Uhrzeit-Objekt erstellen. In der Ausgabe können Sie sehen, dass die Dateiänderungszeitdetails in einem anderen Format ausgedruckt werden 2018-01-08, 13:35:51.334072

Hier ist der Code

#
# Example file for working with o.s path module

import os
from os import path
import datetime
from datetime import date, time, timedelta
import time

def main():

    # Get the modification time
    t = time.ctime(path.getmtime("guru99.txt.bak"))
    print(t)
    print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))

if __name__ == "__main__":
    main()

Häufig gestellte Fragen

Importieren Sie shutil und rufen Sie anschließend shutil.copy(src, dst) auf, um den Inhalt der Datei zu kopieren. Verwenden Sie shutil.copystat(), um auch die Metadaten zu kopieren.

shutil.copystat(src, dst) kopiert die Dateiberechtigungen, die Änderungszeit und die Metadaten einer Datei an das Ziel, jedoch nicht deren Inhalt.

shutil.copy() kopiert Inhalt und Berechtigungen, während shutil.copy2() zusätzlich Metadaten wie Zeitstempel beibehält. Verwenden Sie copy2(), um den Änderungszeitpunkt zu erhalten.

shutil.copy() akzeptiert ein Verzeichnis als Ziel und kopiert die Berechtigungen; shutil.copyfile() benötigt einen vollständigen Dateipfad und kopiert nur den Inhalt.

Verwenden Sie shutil.copytree(src, dst), um ein gesamtes Verzeichnis samt Inhalt rekursiv zu kopieren. Der Zielordner darf noch nicht existieren.

KI-Assistenten wie GitHub Copilot vervollständigen automatisch die Aufrufe von shutil.copy() und copystat() und schlagen für Ihren Fall copy2() oder copytree() vor.

Ja. KI-gestützte Tools generieren Backup-Routinen, wählen die richtige Shutil-Methode aus und fügen Existenzprüfungen hinzu, bevor Dateien oder Ordner kopiert werden.

Verwenden Sie os.path.getmtime(path), um den Zeitstempel zu erhalten, und konvertieren Sie ihn anschließend mit time.ctime() oder datetime.fromtimestamp() in ein lesbares Datum.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: