Dateien verschieben und Verzeichnisse in Python verwalten

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Grundlagen der Dateisystem-Operationen in Python

Die Arbeit mit dem Dateisystem gehört zu den häufigsten Aufgaben in der Python-Entwicklung. Dazu gehören das Erstellen und Löschen von Dateien, das Kopieren, Verschieben und Umbenennen sowie das Anlegen von Verzeichnissen und die Prüfung, ob diese bereits existieren. Dateioperationen bilden die Grundlage für die Automatisierung von Prozessen, Webentwicklung, Datenanalyse, Konfigurationsmanagement und das Deployment von Anwendungen.

Python bietet eine umfangreiche Sammlung integrierter Bibliotheken für die effiziente Arbeit mit dem Dateisystem. Die wichtigsten Werkzeuge sind die Module os, shutil und pathlib. Diese Bibliotheken decken nahezu alle denkbaren Anwendungsfälle ab – von einfachen Grundoperationen bis hin zu fortgeschrittenen Aufgaben.

Dateien verschieben in Python

Die Funktion shutil.move() verwenden

Wenn du eine Datei von einem Verzeichnis in ein anderes verschieben möchtest, ist die Funktion shutil.move() die einfachste und effektivste Methode. Sie funktioniert ähnlich wie der Befehl mv unter Linux und Unix.

import shutil

shutil.move('quelle/datei.txt', 'ziel/datei.txt')

Die Funktion shutil.move() verarbeitet sowohl einzelne Dateien als auch ganze Verzeichnisse. Beim Verschieben kann die Datei gleichzeitig umbenannt werden. Wichtig zu wissen: Wenn im Zielordner bereits eine Datei mit demselben Namen existiert, wird diese ohne Vorwarnung überschrieben.

Verzeichnisse beim Verschieben anlegen

Beim Verschieben von Dateien müssen oft neue Verzeichnisse erstellt werden. Der folgende Ansatz löst dieses Problem:

import os
import shutil

src = 'daten/bericht.txt'
dst_dir = 'archiv'
os.makedirs(dst_dir, exist_ok=True)
shutil.move(src, os.path.join(dst_dir, 'bericht.txt'))

Die Funktion os.makedirs() mit dem Parameter exist_ok=True erstellt eine Kette von Verzeichnissen, falls diese nicht vorhanden sind, und löst keinen Fehler aus, wenn die Verzeichnisse bereits existieren.

Verzeichnisse verschieben

Die Funktion shutil.move() unterstützt auch das Verschieben ganzer Verzeichnisse:

shutil.move('alter_ordner', 'neuer_ort/alter_ordner')

Dateien kopieren und Links erstellen

Einfaches Kopieren von Dateien

Zum Kopieren von Dateien stellt Python mehrere Funktionen mit unterschiedlichem Funktionsumfang bereit:

import shutil

# Kopieren des Dateiinhalts
shutil.copy('datei.txt', 'backup/datei.txt')

Die Funktion copy() kopiert nur den Inhalt der Datei, nicht aber die Metadaten. Für eine vollständige Kopie mit allen Dateiattributen wird copy2() verwendet:

shutil.copy2('datei.txt', 'backup/datei.txt')

Verzeichnisse kopieren

Zum Kopieren ganzer Verzeichnisse mit sämtlichem Inhalt wird die Funktion copytree() verwendet:

shutil.copytree('projekt', 'projekt_backup')

Hardlinks erstellen

Ein Hardlink ist ein zusätzlicher Name für eine bestehende Datei im Dateisystem:

import os

os.link('datei.txt', 'verlinkte_datei.txt')

Ein Hardlink bedeutet, dass eine physische Datei unter mehreren verschiedenen Pfaden verfügbar ist. Änderungen am Dateiinhalt wirken sich auf alle Links aus. Die Anzahl der Hardlinks kann mit os.stat().st_nlink überprüft werden.

Verwaltung von Verzeichnissen

Verzeichnisse erstellen

Python bietet zwei grundlegende Funktionen zum Erstellen von Verzeichnissen:

import os

# Ein einzelnes Verzeichnis erstellen
os.mkdir('neuer_ordner')

# Eine verschachtelte Verzeichnisstruktur erstellen
os.makedirs('eltern/kind/enkel', exist_ok=True)

Die Funktion mkdir() erstellt nur ein einzelnes Verzeichnis und löst eine FileExistsError-Ausnahme aus, wenn das Verzeichnis bereits existiert.

Blogs

Buchempfehlungen