0Pricing
Python Academy · Lektion

shutil für Dateioperationen

Dateien kopieren, verschieben und archivieren

shutil für Dateioperationen ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist shutil?

Das Modul shutil (Shell-Dienstprogramme) bietet Dateioperationen auf hoher Ebene: Dateien kopieren und verschieben, Verzeichnisbäume löschen und Archive erstellen. Für alltägliche Aufgaben baut es auf os auf.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/a.txt', 'w') as f:
    f.write('hello')
print('created a.txt')

Eine Datei kopieren

shutil.copy(src, dst) kopiert den Inhalt einer Datei und deren Berechtigungsbits an einen neuen Speicherort.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/src.txt', 'w') as f:
    f.write('data')
shutil.copy('/tmp/shutil_demo/src.txt', '/tmp/shutil_demo/copy.txt')
print(os.path.exists('/tmp/shutil_demo/copy.txt'))

copy vs copy2

shutil.copy2 funktioniert wie copy, bewahrt aber zusätzlich Metadaten wie Zeitstempel. Verwenden Sie es, wenn Änderungszeiten wichtig sind.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/m.txt', 'w') as f:
    f.write('x')
shutil.copy2('/tmp/shutil_demo/m.txt', '/tmp/shutil_demo/m2.txt')
print('copied with metadata')

Einen vollständigen Verzeichnisbaum kopieren

shutil.copytree(src, dst) kopiert ein vollständiges Verzeichnis rekursiv. Das Ziel darf noch nicht vorhanden sein, es sei denn, Sie übergeben dirs_exist_ok=True.

import shutil, os

os.makedirs('/tmp/tree_src/sub', exist_ok=True)
with open('/tmp/tree_src/sub/f.txt', 'w') as f:
    f.write('hi')
shutil.rmtree('/tmp/tree_dst', ignore_errors=True)
shutil.copytree('/tmp/tree_src', '/tmp/tree_dst')
print(os.path.exists('/tmp/tree_dst/sub/f.txt'))

Dateien und Ordner verschieben

shutil.move(src, dst) verschiebt eine Datei oder ein Verzeichnis oder benennt sie beziehungsweise es um. Der Vorgang funktioniert auch über Dateisystemgrenzen hinweg, wenn os.rename fehlschlagen würde.

import shutil, os

os.makedirs('/tmp/move_demo', exist_ok=True)
with open('/tmp/move_demo/old.txt', 'w') as f:
    f.write('move me')
shutil.move('/tmp/move_demo/old.txt', '/tmp/move_demo/new.txt')
print(os.path.exists('/tmp/move_demo/new.txt'))

Einen Verzeichnisbaum löschen

shutil.rmtree(path) entfernt ein Verzeichnis und alles, was sich darin befindet. Verwenden Sie die Funktion mit Bedacht, denn der Vorgang kann nicht rückgängig gemacht werden.

import shutil, os

os.makedirs('/tmp/to_delete/inner', exist_ok=True)
shutil.rmtree('/tmp/to_delete')
print('exists after rmtree:', os.path.exists('/tmp/to_delete'))

ignore_errors und Sicherheit

Die Übergabe von ignore_errors=True an rmtree verhindert einen Absturz, wenn der Pfad fehlt. Das ist praktisch für Aufräumarbeiten vor einer neuen Ausführung.

import shutil

shutil.rmtree('/tmp/never_existed', ignore_errors=True)
print('no error even though path was absent')

Ein Archiv erstellen

shutil.make_archive(base_name, format, root_dir) packt ein Verzeichnis mit einem einzigen Aufruf in eine ZIP- oder TAR-Datei.

import shutil, os

os.makedirs('/tmp/arch_src', exist_ok=True)
with open('/tmp/arch_src/data.txt', 'w') as f:
    f.write('archive me')
path = shutil.make_archive('/tmp/my_archive', 'zip', '/tmp/arch_src')
print('created', os.path.basename(path))

Ein Archiv extrahieren

shutil.unpack_archive(filename, extract_dir) macht diesen Vorgang rückgängig und entpackt eine ZIP- oder TAR-Datei in einen Ordner.

import shutil, os

shutil.make_archive('/tmp/box', 'zip', '/tmp/arch_src')
shutil.unpack_archive('/tmp/box.zip', '/tmp/unpacked')
print(os.listdir('/tmp/unpacked'))

Ausführbare Dateien finden

shutil.which(name) findet ein Programm im Systempfad PATH, ähnlich wie der Shell-Befehl which. Die Funktion gibt den vollständigen Pfad oder None zurück.

import shutil

print(shutil.which('python3'))
print(shutil.which('definitely_not_a_real_program'))

Festplattennutzung

shutil.disk_usage(path) gibt die Gesamtgröße sowie die belegten und freien Bytes des Dateisystems zurück, in dem sich der Pfad befindet.

import shutil

usage = shutil.disk_usage('/')
print('total GB:', round(usage.total / 1e9, 1))
print('free GB:', round(usage.free / 1e9, 1))

Kurzer Test

Testen Sie Ihr Verständnis von shutil.

Zusammenfassung

Sie haben shutil für Dateioperationen kennengelernt:

  • copy/copy2 kopieren Dateien; copytree kopiert vollständige Verzeichnisbäume.
  • move benennt Dateien oder Verzeichnisse um beziehungsweise verschiebt sie; rmtree löscht Verzeichnisbäume.
  • make_archive/unpack_archive verarbeiten ZIP- und TAR-Dateien.
  • which und disk_usage fragen Systeminformationen ab.

Nächster Kurs: Kommandozeilenprogramme mit argparse erstellen.

Häufig gestellte Fragen

Ist die Lektion „shutil für Dateioperationen“ kostenlos?

Ja — der vollständige Text von „shutil für Dateioperationen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „shutil für Dateioperationen“?

Dateien kopieren, verschieben und archivieren Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „shutil für Dateioperationen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Befehle mit subprocess ausführen
  2. Ausgaben erfassen
  3. Umgebung und os-Modul
  4. shutil für Dateioperationen
← Zurück zu Python Academy