Dateien in Python kopieren mit shutil.copy() und shutil.copystat()
Dateien in Python kopieren mit shutil.copy() und shutil.copystat()
Python Datei-Kopieren Grundlagen
Pythons shutil-Modul bietet unkomplizierte Funktionen zum Kopieren von Dateien und Bewahren von Metadaten. Die zwei primären Dienstprogramme sind shutil.copy() und shutil.copystat().
copy(src, dst)
Kopiert die Datei, die sich unter src befindet, zum Ziel dst. Der Dateiinhalt wird dupliziert, aber Dateiberechtigungen und Zeitstempel werden nicht beibehalten.
copystat(src, dst)
Kopiert Datei-Metadaten – einschließlich Berechtigungen, Zeitstempel und anderer OS-spezifischer Attribute – von src nach dst. Es muss nach einem erfolgreichen copy() aufgerufen werden, um den vollständigen Dateizustand zu replizieren.
Schritt-für-Schritt-Beispiel
- Quelldatei lokalisieren
Bestätigen Sie, dassguru99.txtim aktuellen Arbeitsverzeichnis existiert und rufen Sie den absoluten Pfad ab.

import os
from os import path
src_pfad = path.realpath("guru99.txt")
print("Quelle:", src_pfad)
- Backup-Namen erstellen
Hängen Sie.bakan den ursprünglichen Dateinamen an, um den Zielpfad zu bilden.
dst_pfad = src_pfad + ".bak"
print("Ziel:", dst_pfad)
- Dateiinhalt kopieren
Verwenden Sieshutil.copy(), um die Dateidaten zu duplizieren.
import shutil shutil.copy(src_pfad, dst_pfad)
- Metadaten kopieren
Nach dem Inhaltskopieren die Berechtigungen und Zeitstempel der Originaldatei replizieren.
shutil.copystat(src_pfad, dst_pfad)
- Kopie verifizieren
Verwenden Sieos.path.getmtime(), um die letzte Änderungszeit der Backup-Datei anzuzeigen.
import datetime
mod_time = path.getmtime(dst_pfad)
print("Zuletzt geändert:", datetime.datetime.fromtimestamp(mod_time))
Die Ausführung des Skripts erstellt guru99.txt.bak im gleichen Verzeichnis, komplett mit denselben Berechtigungen und Zeitstempeln wie das Original.
Praktische Tipps
- Führen Sie immer
shutil.copy()vorshutil.copystat()aus – letztere erfordert eine existierende Zieldatei. - Bei der Arbeit über verschiedene Dateisysteme hinweg beachten Sie, dass nicht alle Metadaten-Attribute unterstützt werden;
copystat()kopiert nur das, was das OS verfügbar macht. - Für rekursives Verzeichniskopieren betrachten Sie
shutil.copytree()odershutil.copy2(), dascopy()undcopystat()in einem Schritt kombiniert.
Zusammenfassung
- Verwenden Sie
shutil.copy(src, dst), um Dateiinhalte zu duplizieren. - Verwenden Sie
shutil.copystat(src, dst), um Berechtigungen, Zeitstempel und andere Metadaten zu duplizieren.
Python
- Python-Datentypen meistern: Praxisleitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Python pass-Statement meistern: Praxisleitfaden
- Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Python File I/O: Dateioperationen, Lesen, Schreiben und Verwaltung meistern
- Python len(): Praktischer Leitfaden zur Messung von Objektlängen
- Pythons String.find()-Methode meistern: Syntax, Beispiele & Alternativen
- Datei- und Verzeichnisexistenz in Python prüfen – Ein praktischer Leitfaden
- Python JSON: Encoding, Decoding und Datei-Handling – Ein praktischer Leitfaden