Python File I/O: Dateioperationen, Lesen, Schreiben und Verwaltung meistern
Python File I/O
Lernen Sie, wie Sie Dateien in Python mit klaren Beispielen und Best-Practice-Techniken öffnen, lesen, schreiben und schließen.
Video: Dateien in Python lesen und schreiben
Dateien
Dateien sind benannte Speicherorte auf der Festplatte, die Daten persistent speichern. Da RAM flüchtig ist, verlassen wir uns auf Dateien, um Informationen zwischen Programmausführungen zu behalten.
Bei der Interaktion mit einer Datei ist die typische Sequenz: öffnen → lesen/schreiben → schließen.
Dateien in Python öffnen
Pythons eingebaute open()-Funktion gibt ein Dateiobjekt zurück, das Sie für I/O-Operationen verwenden können. Die Funktionssignatur lautet:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Wichtige Punkte:
modesteuert die Operation:r(lesen),w(schreiben, trunciert),a(anhängen),x(exklusiv erstellen).t(Text) ist Standard;b(binär) gibtbytes-Objekte zurück.+erlaubt gleichzeitiges Lesen und Schreiben.- Geben Sie immer
encodingan, wenn Sie mit Text arbeiten, um plattformabhängige Standardwerte zu vermeiden (z. B.cp1252unter Windows,utf-8unter Linux).
| Modus | Beschreibung |
|---|---|
r | Lesen (Standard) |
w | Schreiben; erstellt neu oder trunciert existente |
x | Exklusive Erstellung; schlägt fehl, wenn Datei existiert |
a | Anhängen; erstellt, falls fehlend |
t | Textmodus (Standard) |
b | Binärmodus |
+ | Lesen und Schreiben |
f = open("test.txt") # r/rt
f = open("test.txt", "w") # schreiben
f = open("img.bmp", "r+b") # lesen/schreiben binär
Da a ein Zeichen ist, entspricht es nicht der Zahl 97, es sei denn, es wird encodiert. Setzen Sie explizit encoding='utf-8' für Textdateien.
f = open("test.txt", mode='r', encoding='utf-8')
Dateien in Python schließen
Das ordnungsgemäße Schließen einer Datei gibt Systemressourcen frei. Die close()-Methode ist einfach, aber die Verwendung eines Context Managers ist das sicherste Muster.
with open("test.txt", encoding='utf-8') as f:
# Dateioperationen durchführen
pass
try:
f = open("test.txt", encoding='utf-8')
# Operationen
finally:
f.close()
In Dateien schreiben in Python
Verwenden Sie w, a oder x Modus zum Schreiben. w überschreibt bestehenden Inhalt; a bewahrt ihn.
Die write()-Methode akzeptiert einen String (oder Bytes für binär) und gibt die Anzahl der geschriebenen Zeichen zurück.
with open("test.txt", "w", encoding='utf-8') as f:
f.write("meine erste Datei\n")
f.write("Diese Datei\n\n")
f.write("enthält drei Zeilen\n")
Denken Sie daran, Newline-Zeichen einzufügen, um Zeilen zu trennen.
Dateien in Python lesen
Öffnen Sie mit r Modus. Die read()-Methode akzeptiert ein optionales size-Argument; weglassen liest bis EOF.
f = open("test.txt", "r", encoding='utf-8')
print(f.read(4)) # 'Dies'
print(f.read(4)) # ' ist '
print(f.read()) # restlicher Inhalt
f.close()
Bewegen Sie den Cursor mit seek() und fragen Sie seine Position mit tell() ab:
print(f.tell()) # aktuelle Position
f.seek(0) # zurückspulen
print(f.read()) # alles lesen
Effizient über Zeilen iterieren:
for line in f:
print(line, end='')
Alternativ bieten readline() und readlines() zeilenweisen Zugriff.
Python Datei-Methoden
Nachfolgend eine kompakte Referenz für die gängigsten Datei-Methoden im Textmodus.
| Methode | Beschreibung |
|---|---|
| close() | Datei schließen. |
| detach() | Unterliegenden binären Buffer trennen. |
| fileno() | Dateideskriptor zurückgeben. |
| flush() | Schreibpuffer leeren. |
| isatty() | Prüfen, ob Stream interaktiv ist. |
| read(n) | Bis zu n Zeichen lesen; None liest bis EOF. |
| readable() | Ist der Stream lesbar? |
| readline(n=-1) | Einzelne Zeile lesen, bis zu n Zeichen. |
| readlines(n=-1) | Liste von Zeilen zurückgeben, bis zu n Zeichen. |
| seek(offset, from_=SEEK_SET) | Cursor zu offset von from_ (Start, aktuell, Ende) bewegen. |
| seekable() | Kann der Stream Random Access unterstützen? |
| tell() | Aktuelle Cursor-Position abrufen. |
| truncate(size=None) | Datei auf size Bytes verkleinern. |
| writable() | Ist der Stream schreibbar? |
| write(s) | String s schreiben; gibt Anzahl geschriebener Zeichen zurück. |
| writelines(lines) | Iterable von Strings schreiben. |
Python
- C Eingabe und Ausgabe (I/O) meistern: scanf() und printf() erklärt
- Python-Datentypen meistern: Praxisleitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Python File I/O: Dateioperationen, Lesen, Schreiben und Verwaltung meistern
- Datei- und Verzeichnisexistenz in Python prüfen – Ein praktischer Leitfaden
- Python JSON: Encoding, Decoding und Datei-Handling – Ein praktischer Leitfaden
- Datei-I/O in C meistern: Erstellen, Öffnen & Verwalten von Dateien
- C# Datei-E/A: Lesen, Schreiben & Stream-Verwaltung
- Python Datei-E/A: Eingabe- und Ausgabeoperationen meistern