- 1 1. Einleitung
- 2 2. Vorbereitung zum Kopieren von Dateien mit Python
- 3 3. Grundlegende Verwendung von shutil
- 4 4. Ein ganzes Verzeichnis kopieren
- 5 5. Überschreiben verhindern
- 6 6. Dateien mit Python verschieben
- 7 7. Praxisbeispiele für Dateikopien mit Python
- 8 8. Erweiterung: Nur bestimmte Dateitypen kopieren
- 9 9. Fehlerbehandlung und Exception Handling
- 10 10. Fazit
1. Einleitung
Python bietet leistungsstarke Werkzeuge für die einfache Dateiverwaltung. Besonders das Kopieren von Dateien gehört zu den alltäglichen Aufgaben. In diesem Artikel zeigen wir, wie man mit dem Standardmodul shutil
Dateien und Verzeichnisse effizient kopiert. Anhand praktischer Codebeispiele gehen wir auch auf Techniken zur Vermeidung von Überschreibungen, Fehlerbehandlung und erweiterte Methoden zum Kopieren ein.
2. Vorbereitung zum Kopieren von Dateien mit Python
shutil
-Modul importieren
Das shutil
-Modul ist Teil der Python-Standardbibliothek und erfordert keine zusätzliche Installation. Der Import erfolgt mit folgendem Code:
import shutil
Damit können Dateien kopiert, verschoben oder gelöscht werden. In Kombination mit dem os
-Modul lassen sich zusätzlich Existenzprüfungen durchführen und die Fehlerbehandlung verbessern.
Vorteile des shutil
-Moduls
Das shutil
-Modul zeichnet sich durch intuitive Handhabung und eine klare Code-Struktur aus. Besonders bei der Massenverarbeitung von Dateien oder ganzen Verzeichnissen ist es ein sehr hilfreiches Werkzeug.

3. Grundlegende Verwendung von shutil
Verwendung von shutil.copy()
Die Funktion shutil.copy()
ist die Basis zum Kopieren von Dateien. Sie kopiert eine Quelldatei an den angegebenen Zielort.
import shutil
# Datei kopieren
shutil.copy('original.txt', 'copy.txt')
Existiert im Zielverzeichnis bereits eine Datei mit demselben Namen, wird sie überschrieben.
Verwendung von shutil.copy2()
Die Funktion shutil.copy2()
kopiert zusätzlich auch Metadaten wie Erstellungsdatum oder Berechtigungen.
import shutil
# Datei mit Metadaten kopieren
shutil.copy2('original.txt', 'copy_with_metadata.txt')
Dies ist besonders nützlich, wenn eine vollständige Kopie der Datei benötigt wird.
4. Ein ganzes Verzeichnis kopieren
Verwendung von shutil.copytree()
Mit shutil.copytree()
lassen sich komplette Verzeichnisse einschließlich aller Unterordner und Dateien rekursiv kopieren.
import shutil
# Verzeichnis kopieren
shutil.copytree('source_directory', 'destination_directory')
Existiert das Zielverzeichnis bereits, tritt ein Fehler auf – daher sollte man dies vorher prüfen.
Dateien oder Ordner beim Kopieren ausschließen
Um bestimmte Dateien oder Verzeichnisse zu ignorieren, kann das Argument ignore
mit shutil.ignore_patterns()
genutzt werden.
import shutil
# .log-Dateien beim Kopieren ignorieren
shutil.copytree('source_directory', 'destination_directory', ignore=shutil.ignore_patterns('*.log'))
Damit werden alle .log
-Dateien ausgeschlossen.
5. Überschreiben verhindern
Mit os.path.exists()
Standardmäßig überschreiben shutil.copy()
und shutil.copy2()
vorhandene Dateien. Um dies zu vermeiden, sollte vorher geprüft werden, ob die Datei bereits existiert.
import shutil
import os
# Vorhandensein prüfen, um Überschreiben zu vermeiden
if not os.path.exists('copy.txt'):
shutil.copy('original.txt', 'copy.txt')
else:
print('Die Datei existiert bereits. Kopiervorgang übersprungen.')
Mit pathlib.Path.exists()
Das pathlib
-Modul ermöglicht eine noch intuitivere Existenzprüfung.
from pathlib import Path
# Existenzprüfung mit Path-Objekt
dst = Path('copy.txt')
if not dst.exists():
shutil.copy('original.txt', dst)
else:
print('Die Datei existiert bereits. Kopiervorgang übersprungen.')
6. Dateien mit Python verschieben
Verwendung von shutil.move()
Mit shutil.move()
können Dateien oder Verzeichnisse an einen neuen Speicherort verschoben werden.
import shutil
# Datei verschieben
shutil.move('original.txt', 'new_folder/original.txt')
Existiert das Zielverzeichnis nicht, tritt ein FileNotFoundError
auf. Daher sollte man es ggf. vorher erstellen:
import shutil
import os
# Verzeichnis erstellen, falls es nicht existiert
if not os.path.exists('new_folder'):
os.makedirs('new_folder')
# Datei verschieben
shutil.move('original.txt', 'new_folder/original.txt')

7. Praxisbeispiele für Dateikopien mit Python
Beispiel: Datei kopieren
import shutil
# Datei kopieren
shutil.copy('data.txt', 'backup/data_backup.txt')
Beispiel: Ganzes Verzeichnis kopieren
import shutil
# Verzeichnis kopieren
shutil.copytree('project_files', 'project_backup')
Beispiel: Überschreiben verhindern
import shutil
import os
# Kopie nur erstellen, wenn Datei nicht existiert
if not os.path.exists('backup/report.txt'):
shutil.copy('report.txt', 'backup/report.txt')
else:
print('Die Datei existiert bereits. Kopiervorgang abgebrochen.')
8. Erweiterung: Nur bestimmte Dateitypen kopieren
Mit dem glob
-Modul können gezielt bestimmte Dateitypen (z. B. .txt
oder .csv
) kopiert werden.
import shutil
import glob
# Alle .txt-Dateien kopieren
for file in glob.glob('data/*.txt'):
shutil.copy(file, 'backup/')
Damit werden alle .txt
-Dateien aus dem data
-Ordner ins backup
-Verzeichnis kopiert.
9. Fehlerbehandlung und Exception Handling
Bei Dateioperationen ist eine robuste Fehlerbehandlung entscheidend. Häufige Fehler sind fehlende Dateien oder fehlende Zugriffsrechte.
Grundlegende Fehlerbehandlung
import shutil
try:
shutil.copy('non_existent_file.txt', 'backup/')
except FileNotFoundError as e:
print(f'Datei nicht gefunden: {e}')
except PermissionError as e:
print(f'Zugriffsfehler: {e}')
except Exception as e:
print(f'Unerwarteter Fehler: {e}')
Damit können spezifische Fehler abgefangen und behandelt werden.
10. Fazit
Mit dem Python-Modul shutil
lassen sich Dateien und Verzeichnisse sehr einfach kopieren. Durch Techniken zur Vermeidung von Überschreibungen, selektives Kopieren bestimmter Dateitypen und gezielte Fehlerbehandlung wird die Arbeit mit Dateien nicht nur sicherer, sondern auch effizienter. Nutzen Sie diese Methoden, um Ihre täglichen Aufgaben mit Python zu optimieren.