Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Arbeiten mit Verschiedenen Dateimodi | Advanced File Handling & Context Managers
Python Fortgeschrittene Konzepte

Arbeiten mit Verschiedenen Dateimodi

Swipe um das Menü anzuzeigen

Erläuterung der Verwendung verschiedener Dateimodi in Python zum Lesen, Schreiben und Anhängen von Dateien anhand praxisnaher Beispiele.

Python-Dateimodi umfassen: 'r' zum Lesen, 'w' zum Schreiben (erstellt/überschreibt), 'a' zum Anhängen (erstellt, falls nicht vorhanden), 'b' für den Binärmodus und '+' für Lese-/Schreibzugriff. Auswahl des passenden Modus zur Vermeidung von Datenverlust.

Lesemodus

Der Lesemodus ('r') öffnet eine vorhandene Datei ausschließlich zum Lesen. Änderungen oder das Schreiben in die Datei sind in diesem Modus nicht möglich. Existiert die Datei nicht, gibt Python einen FileNotFoundError aus. Verwendung dieses Modus zur reinen Datenabfrage aus einer Datei ohne Änderungen am Inhalt.

123456
with open("sample.txt", "w") as f: f.write("This is a sample file.\nSecond line.") with open("sample.txt", "r") as f: content = f.read() print(content)

Dieser Code erstellt eine Textdatei mit Beispielinhalt und liest anschließend den Inhalt aus der Datei und gibt ihn aus.

Schreibmodus

Der Schreibmodus (w) in Python öffnet eine Datei zum Schreiben. Der Modus w wird verwendet, wenn eine Datei neu erstellt oder eine bestehende Datei geleert und deren Inhalt ersetzt werden soll. Vorsicht: Alle vorhandenen Daten in der Datei gehen verloren, wenn sie mit dem Modus w geöffnet wird.

1234567891011
with open("write_example.txt", "w") as file: file.write("This file was created or overwritten using write mode.\n") with open("write_example.txt", "r") as file: print(file.read()) with open("write_example.txt", "w") as file: file.write("Every time you run this code, the contents are replaced.\n") with open("write_example.txt", "r") as file: print(file.read())

Dieser Code zeigt den Dateiinhalt nach dem ersten Schreiben und anschließend nach dem Überschreiben, sodass ersichtlich wird, wie vorherige Daten gelöscht und durch neuen Inhalt ersetzt werden.

Anfügemodus

Der Anfügemodus, angegeben durch den Dateimodus 'a', öffnet eine Datei zum Schreiben, indem neuer Inhalt am Ende der Datei hinzugefügt wird. Falls die Datei nicht existiert, wird sie automatisch erstellt. Dieser Modus ist nützlich, wenn bestehende Daten erhalten bleiben sollen und lediglich weitere Informationen am Ende ergänzt werden, beispielsweise beim Protokollieren neuer Einträge oder beim fortlaufenden Aktualisieren von Datensätzen. Im Gegensatz zum Schreibmodus ('w') werden im Anfügemodus bestehende Inhalte niemals entfernt oder überschrieben.

123456789
with open("append_example.txt", "w") as f: f.write("Original line\n") with open("append_example.txt", "a") as f: f.write("Appended line\n") with open("append_example.txt", "r") as f: result = f.read() print(result.strip())

Dieser Code erstellt zunächst eine Datei mit einem Anfangsinhalt. Anschließend wird dieselbe Datei im Anfügemodus ('a') geöffnet, um eine neue Zeile am Ende hinzuzufügen. Abschließend wird der gesamte Dateiinhalt gelesen und ausgegeben, sodass ersichtlich ist, dass die neuen Daten am Ende hinzugefügt wurden, ohne den ursprünglichen Inhalt zu löschen oder zu verändern.

Binärmodus

Der Binärmodus wird verwendet, wenn Dateien als Bytes statt als Text gelesen oder geschrieben werden müssen. Dies ist unerlässlich für die Arbeit mit Nicht-Textdateien wie Bildern, Audiodateien oder ausführbaren Dateien. Der Modus 'b' wird mit anderen Dateimodi kombiniert, zum Beispiel 'rb' zum Lesen im Binärmodus oder 'wb' zum Schreiben im Binärmodus.

Beim Öffnen einer Datei im Binärmodus werden Daten exakt als rohe Bytes gelesen und geschrieben. Es findet keine Kodierung oder Dekodierung statt, daher muss die Verarbeitung als bytes-Objekte erfolgen. Dies verhindert Probleme, die beim Lesen oder Schreiben von Dateien auftreten können, die keine Standard-Textkodierung verwenden.

12345678
byte_data = b"\x48\x65\x6c\x6c\x6f, binary world!" # This is 'Hello, binary world!' in bytes with open("sample_binary.bin", "wb") as f: f.write(byte_data) with open("sample_binary.bin", "rb") as f: read_bytes = f.read() print(read_bytes)

Der Code schreibt eine Byte-Zeichenkette mit der Nachricht 'Hello, binary world!' in eine Datei namens sample_binary.bin im Write-Binary-Modus ('wb'). Das b im Modus stellt sicher, dass die Datei als Binärdaten und nicht als Text behandelt wird. Nach dem Schreiben wird die Datei erneut im Read-Binary-Modus ('rb') geöffnet, um die rohen Bytes auszulesen. Der Code gibt anschließend die menschenlesbare Darstellung des Bytes-Objekts aus.

Lese- und Schreibmodus

Der r+-Dateimodus ermöglicht sowohl das Lesen als auch das Schreiben in eine bestehende Datei. Wenn eine Datei mit r+ geöffnet wird, können deren Inhalte gelesen, verändert oder an beliebiger Stelle neue Daten hinzugefügt werden. Die Datei muss jedoch bereits existieren – r+ erstellt keine neue Datei, falls keine mit dem angegebenen Namen gefunden wird.

Dieser Modus ist nützlich, wenn Daten in einer Datei aktualisiert oder verarbeitet werden sollen, ohne den bestehenden Inhalt zu verlieren. Schreiboperationen beginnen an der aktuellen Position im Dateizeiger, sodass mit Methoden wie seek() genau gesteuert werden kann, wo Änderungen erfolgen.

1234567891011121314151617
# Writing initial content to the file with open("data.txt", "w") as f: f.write("First line\nSecond line\n") # Opening the file in r+ mode for reading and updating with open("data.txt", "r+") as f: # Reading and printing the original content original_content = f.read() print("Before update:\n" + original_content.strip()) # Moving file pointer to the beginning f.seek(0) # Overwriting the first line f.write("Updated first line\n") # Moving pointer to the start to read the updated content f.seek(0) updated_content = f.read() print("After update:\n" + updated_content.strip())

Diese Ausgabe zeigt, dass die erste Zeile der Datei erfolgreich überschrieben wurde. Mit dem Lese-/Schreibmodus ('r+') können gezielt bestimmte Teile einer Datei aktualisiert werden – zum Beispiel nur die erste Zeile – ohne den gesamten Inhalt zu löschen oder neu zu schreiben. Dies ist nützlich, um bestehende Daten zu bearbeiten und gleichzeitig andere Inhalte in der Datei zu erhalten.

Wenn der Modus 'r+' verwendet wird, überschreibt jeder neue Eintrag den bestehenden Inhalt ab der aktuellen Dateiposition. Ist der neue Inhalt kürzer als der ursprüngliche, bleibt der Rest der alten Zeile in der Datei erhalten. Das bedeutet, dass nach dem neuen Schreibvorgang noch Teile des vorherigen Inhalts sichtbar sein können. Die Datei wird nicht automatisch gekürzt, daher können zusätzliche Zeichen aus dem ursprünglichen Inhalt über das Ende der neuen Daten hinaus bestehen bleiben.

1. Welchen Dateimodus sollten Sie verwenden, wenn Sie eine vorhandene Textdatei lesen möchten, ohne sie zu verändern?

2. Welchen Dateimodus sollten Sie verwenden, um neue Daten am Ende einer bestehenden Textdatei hinzuzufügen, ohne deren aktuellen Inhalt zu löschen?

question mark

Welchen Dateimodus sollten Sie verwenden, wenn Sie eine vorhandene Textdatei lesen möchten, ohne sie zu verändern?

Wählen Sie die richtige Antwort aus

question mark

Welchen Dateimodus sollten Sie verwenden, um neue Daten am Ende einer bestehenden Textdatei hinzuzufügen, ohne deren aktuellen Inhalt zu löschen?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 2. Kapitel 1
some-alt