6.1 Arbeiten mit Dateien
Python bietet viele eingebaute Funktionen und Module zum Arbeiten mit Dateien und Verzeichnissen. Die Hauptoperationen werden mit den eingebauten Modulen os
, shutil
und anderen durchgeführt.
Drei Hauptoperationen mit Dateien:
- Kopieren
- Verschieben
- Löschen
Für diese Aufgaben ist das Modul shutil
perfekt geeignet.
Datei kopieren
import shutil
shutil.copy('source.txt', 'destination.txt')
Datei verschieben
import shutil
shutil.move('source.txt', 'destination.txt')
Datei löschen
import os
os.remove('example.txt')
Einfacher geht's nicht.
6.2 Überprüfen der Existenz einer Datei
Oft muss man überprüfen, ob eine bestimmte Datei existiert oder nicht. Dafür hat das Modul os
eine spezielle Methode — exists()
.
Überprüfung der Existenz einer Datei
import os
if os.path.exists('example.txt'):
print("Datei existiert")
else:
print("Datei existiert nicht")
# Wenn die Datei nicht existiert, führt das Programm die im else-Block beschriebenen Aktionen aus.
# Zum Beispiel kann man eine Warnung ausgeben, eine neue Datei erstellen oder das Programm beenden.
Wenn die Datei nicht existiert, kann das Programm dies mit Bedingungen behandeln oder eine Ausnahme werfen.
6.3 Überprüfung des Objekttyps: Datei oder Verzeichnis
Oft muss man überprüfen, ob ein Objekt eine Datei oder ein Verzeichnis ist. Zum Beispiel, wenn man den gesamten Inhalt eines Verzeichnisses liest und Dateien anders als Verzeichnisse verarbeiten muss.
Für solche Fälle gibt es zwei spezielle Methoden — isdir()
, die prüft, ob ein Objekt ein Verzeichnis ist, und isfile()
, die prüft, ob ein Objekt eine Datei ist.
Überprüfung, ob es ein Verzeichnis ist oder nicht
if os.path.isdir('example_directory'):
print("Es ist ein Verzeichnis")
else:
print("Es ist kein Verzeichnis")
Überprüfung, ob es eine Datei ist oder nicht
if os.path.isfile('example_file'):
print("Es ist eine Datei")
else:
print("Es ist keine Datei")
Das sind sehr nützliche Funktionen, die du häufiger verwenden wirst, als du denkst. :)
6.4 Arbeiten mit Pfaden
Das Modul os
hat ein Untermodul os.path
, das nützliche Funktionen für die Arbeit mit Dateien und Verzeichnissen enthält. Hier sind einige davon:
Erhalten der Dateierweiterung
Die Funktion splitext()
teilt den Dateinamen in zwei Teile und gibt eine Liste mit zwei Elementen zurück: Name und Erweiterung.
import os.path
# Erhalten der Dateierweiterung
file_path = 'example.txt'
file_extension = os.path.splitext(file_path)[1]
print(f"Dateierweiterung: {file_extension}")
Erhalten des Dateinamens ohne Erweiterung
import os.path
# Erhalten des Dateinamens ohne Erweiterung
file_path = 'example.txt'
file_name = os.path.splitext(os.path.basename(file_path))[0]
print(f"Dateiname ohne Erweiterung: {file_name}")
Erhalten des Dateinamens aus dem Pfad
Die Funktion basename()
gibt nur den Dateinamen zurück und schneidet den gesamten Pfad ab.
import os.path
# Erhalten des Dateinamens aus dem Pfad
file_path = '/path/to/example.txt'
file_name = os.path.basename(file_path)
print(f"Dateiname: {file_name}")
Erhalten des Verzeichnisses aus dem Pfad
Ebenso einfach ist es, nur das Verzeichnis aus einem Dateinamen zu erhalten, mithilfe der Funktion dirname()
.
import os.path
# Erhalten des Verzeichnisses aus dem Pfad
file_path = '/path/to/example.txt'
directory = os.path.dirname(file_path)
print(f"Verzeichnis: {directory}")
Zusammenfügen von Pfaden
Wenn du ein separates Verzeichnis und einen separaten Dateinamen hast, kannst du den vollständigen Pfad zu dieser Datei erhalten.
import os.path
# Zusammenfügen von Pfaden
directory = '/path/to'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Vollständiger Pfad: {full_path}")
6.5 Plattformunabhängige Pfade
Beim Arbeiten mit Pfaden ist es wichtig, die Unterschiede zwischen den Betriebssystemen zu berücksichtigen. Pfadtrennzeichen können unterschiedlich sein, und Code, der auf einer Plattform funktioniert, funktioniert möglicherweise nicht auf einer anderen. Um Probleme beim Portieren von Code zwischen verschiedenen Betriebssystemen zu vermeiden, verwenden Sie die Funktionen os.path.join()
, os.path.abspath()
und os.path.dirname()
, die Kompatibilität mit verschiedenen Plattformen gewährleisten.
Zum Beispiel:
import os
# Zusammenfügen von Pfaden plattformunabhängig
directory = 'some_directory'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Vollständiger Pfad: {full_path}")
Erhalten des absoluten Pfads
Wenn du nur den Pfad relativ zum aktuellen Arbeitsverzeichnis hast, aber ihn in einen absoluten Pfad umwandeln möchtest, gibt es dafür die Funktion abspath()
.
import os.path
# Erhalten des absoluten Pfads
relative_path = 'example.txt'
absolute_path = os.path.abspath(relative_path)
print(f"Absoluter Pfad: {absolute_path}")
Wichtig!
Verwende immer systemeigene Funktionen beim Arbeiten mit Pfaden, da dein Code auf einem anderen Betriebssystem ausgeführt werden könnte, wo der Dateitrennzeichen nicht \
, sondern /
ist, oder wo «:»
in Pfaden verboten sind oder etwas anderes.
GO TO FULL VERSION