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.
123456with 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.
1234567891011with 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.
123456789with 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.
12345678byte_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?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen