English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python Grundlagen教程

Python Kontrollfluss

Python Funktion

Python Datentypen

Python Dateioperationen

Python Objekte und Klassen

Python Datum und Zeit

Python Fortgeschrittene Kenntnisse

Python Referenzhandbuch

Python DateiI/O

Was ist eine Datei?

Eine Datei ist ein benannter Ort auf der Festplatte, der zur Speicherung relevanter Informationen verwendet wird. Sie wird verwendet, um Daten dauerhaft in nichtflüchtigen Speicher (z.B. Festplatte) zu speichern.

Da der Zufallszugriffsspeicher (RAM) verlustbehaftet ist und seine Daten beim Schließen des Computers verliert, verwenden wir Dateien, um Daten für zukünftige Verwendung zu speichern.

Wenn wir eine Datei lesen oder schreiben möchten, müssen wir sie zunächst öffnen. Nachdem die Operation abgeschlossen ist, muss sie geschlossen werden, um die mit der Datei verbundenen Ressourcen freizugeben.

Daher erfolgen Dateioperationen in Python in der folgenden Reihenfolge.

  1. Datei öffnen

  2. Lesen oder Schreiben (Ausführung der Operation)

  3. Datei schließen

Wie öffnet man eine Datei?

Python verfügt über eine eingebaute Funktion open() zum Öffnen von Dateien. Diese Funktion gibt ein Dateiobjekt zurück, auch als Handle bezeichnet, da es zum Lesen oder Ändern der Datei verwendet wird.

>>> f = open("test.txt") # Datei im aktuellen Verzeichnis öffnen
>>> f = open("C:/Python33/README.txt") # Vollständigen Pfad angeben

Wir können das Modus beim Öffnen der Datei angeben. In dem Modus legen wir fest, ob wir 'r' zum Lesen, 'w' zum Schreiben oder 'a' zum Anhängen an die Datei verwenden möchten. Wir legen auch fest, ob die Datei im Textmodus oder im Binärbetrieb geöffnet werden soll.

Die Standardeinstellung ist das Lesen im Textmodus. In diesem Modus erhalten wir bei der Lesung aus der Datei Zeichenfolgen.

Andererseits gibt der Binärbetrieb Bytes zurück, das ist der Modus, der bei der Verarbeitung von nicht-textbasierten Dateien (wie Bildern oder exe-Dateien) verwendet wird.

Dateimodus in Python
ModusBeschreibung
'r'Öffnen der Datei zum Lesen. (Standard)
'w'Öffnen der Datei zum Schreiben. Wird die Datei nicht gefunden, wird eine neue Datei erstellt, oder wenn sie existiert, wird sie gekürzt.
'x'Öffnen der Datei zum exklusiven Erstellen. Fehlschlag der Operation, wenn die Datei bereits existiert.
'a'Öffnen, um an das Dateiende anzuhängen, ohne zu kürzen. Wird die Datei nicht gefunden, wird eine neue Datei erstellt.
't'Öffnen im Textmodus. (Standard)
'b'Öffnen im Binärbetrieb.
'+'Öffnen der Datei zum Aktualisieren (Lesen und Schreiben)
f = open("test.txt") # Entspricht 'r' oder 'rt'
f = open("test.txt",'w') # Schreiben im Textmodus
f = open("img.bmp",'r+b') # Lesen und Schreiben im Binärbetrieb

Im Gegensatz zu anderen Sprachen wird das Zeichen 'a' vor der Kodierung in ASCII (oder einem äquivalenten Kodierungssystem) nicht als numerisch angenommen.97 .

Darüber hinaus hängt die Standardkodierung von der Plattform ab. Auf Windows, 'cp1252aber 'utf-8auf Linux.

Daher dürfen wir uns auch nicht auf die Standardkodierung verlassen, da unser Code auf verschiedenen Plattformen unterschiedlich verhalten kann.

Daher wird dringend empfohlen, den Kodierungstyp anzugeben, wenn Dateien im Textmodus bearbeitet werden.

f = open("test.txt",mode = 'r',encoding = 'utf-8)

Wie schließt man Dateien in Python?

Nach Abschluss der Dateioperationen müssen wir die Datei korrekt schließen.

Das Schließen der Datei freigibt die mit der Datei verbundenen Ressourcen und wird durch die close()-Methode abgeschlossen.

Python hat einen Garbage Collector, um nicht referenzierte Objekte zu bereinigen, aber wir dürfen uns nicht darauf verlassen, dass Dateien geschlossen werden.

f = open("test.txt",encoding = 'utf-8)
# Dateioperationen ausführen
f.close()

Diese Methode ist nicht vollständig sicher. Wenn eine Ausnahme während der Ausführung bestimmter Operationen auf der Datei auftritt, wird der Code beendet, ohne die Datei zu schließen.

Eine sicherere Methode ist die Verwendung vontry ... finallyBlock.

try:
   f = open("test.txt",encoding = 'utf-8)
   # Dateioperationen ausführen
finally:
   f.close()

So können wir sicherstellen, dass die Datei korrekt geschlossen wird, selbst wenn eine Ausnahme ausgelöst wird, was den Programmfluss stoppt.

Das Beste ist es, den with-Ausdruck zu verwenden. Dies stellt sicher, dass die Datei geschlossen wird, wenn der interne Block verlassen wird.

Wir müssen die close()-Methode nicht explizit aufrufen. Dies wird intern erledigt.

with open("test.txt",encoding = 'utf-8) as f:
   # Dateioperationen ausführen

Wie schreibt man Dateien in Python?

Um Dateien mit Python zu schreiben, können wir sie im 'w'-Modus schreiben, im 'a'-Modus anhängen oder im 'x'-Modus exklusiv erstellen.

Wir müssen vorsichtig mit dem 'w'-Modus umgehen, da er Dateien überschreibt (wenn sie bereits existieren). Alle vorherigen Daten werden gelöscht.

Der Schreibvorgang von Zeichenfolgen oder Byte-Sequnzen (für binäre Dateien) wird durch das write()-Verfahren durchgeführt. Dieses Verfahren gibt die Anzahl der in die Datei geschriebenen Zeichen zurück.

with open("test.txt",'w',encoding = 'utf-8) as f:
   f.write("my first file\n")
   f.write("This file\n\n")
   f.write("contains three lines\n")

Falls 'test.txt' nicht existiert, wird das Programm eine Datei mit dem Namen erstellen. Falls sie tatsächlich existiert, wird sie überschrieben.

Wir müssen die Zeilenumbrüche selbst einschließen, um verschiedene Zeilen zu unterscheiden.

Wie liest man Dateien in Python?

Um Dateien mit Python zu lesen, müssen wir die Datei im Lese-Modus öffnen.

Es gibt mehrere Methoden, die für diesen Zweck verwendet werden können. Wir können die read(size)-Methode verwenden, umGrößeDaten. Wenn nicht angegebenGrößeParameter, der den Inhalt der Datei liest und bis zum Dateiende zurückkehrt.

>>> f = open("test.txt",'r',encoding = 'utf-8)
>>> f.read(4)           # Lesen des Anfangs4Daten
'Dies'
>>> f.read(4)           # Nächsten4Daten
' ist '
>>> f.read()           # Rest des Inhalts lesen, bis zum Dateiende
'meine erste Datei\nDiese Datei\nenthält drei Zeilen\n'
>>> f.read()           # Weitere Lesung gibt eine leere Zeichenkette zurück

Wir sehen, dass die read()-Methode den Zeilenumbruch '\n' als '\n' zurückgibt. Nachdem das Dateiende erreicht wurde, erhalten wir eine leere Zeichenkette, wenn wir weiter lesen.

Wir können die seek()-Methode verwenden, um den aktuellen Dateipfeil (Position) zu ändern. Ebenso gibt die tell()-Methode unsere aktuelle Position (in Bytes) zurück.

>>> f.tell()           # Die aktuelle Position der Datei abrufen
56
>>> f.seek(0)           # Den Dateipfeil an den Anfang der Datei setzen
0
>>> print(f.read())       # Den gesamten Inhalt der Datei lesen
Dies ist meine erste Datei
Diese Datei
enthält drei Zeilen

Wir können verwendenfor-SchleifeZeilenweise Lesen der Datei. Das ist sowohl effizient als auch schnell.

>>> for line in f:
...   print(line, end = '')
...
Dies ist meine erste Datei
Diese Datei
enthält drei Zeilen

Die Zeilen der Datei selbst haben den Zeilenumbruch '\n'.

Darüber hinaus vermeidet der print()-Endparameter zwei Zeilenumbrüche beim Drucken.

Oder wir können die readline()-Methode verwenden, um Zeilen der Datei einzeln zu lesen. Diese Methode liest die Datei bis zum Zeilenumbruch, einschließlich des Zeilenumbruchs.

>>> f.readline()
'Dies ist meine erste Datei\n'
>>> f.readline()
'Diese Datei\n'
>>> f.readline()
'enthält drei Zeilen\n'
>>> f.readline()

Schließlich gibt die readlines()-Methode eine Liste der restlichen Zeilen des gesamten Dateiinhalts zurück. Wenn das Dateiende (EOF) erreicht wird, geben alle diese Lesemethoden einen leeren Wert zurück.

>>> f.readlines()
['Dies ist meine erste Datei\n', 'Diese Datei\n', 'enthält drei Zeilen\n']

Python-Dateimethoden

Dateiobjekte haben viele verfügbare Methoden. Einige davon wurden in den obigen Beispielen verwendet.

Dies ist eine vollständige Liste der Methoden im Textmodus mit kurzen Erklärungen.

Python-Dateimethoden
close()Datei schließen.
detach()Einen separierten Rohstrom (raw stream) aus dem Puffer zurückgeben.
fileno()Von der Perspektive des Betriebssystems aus gibt die Nummer des Streams zurück.
flush()Internes Pufferbuffer leeren.
isatty()Rückgabe, ob der Dateistream interaktiv ist.
read()Rückgabe des Dateiinhalts.
readable()Rückgabe, ob der Dateistream lesbar ist.
readline()Rückgabe einer Zeile im Dateiinhalt.
readlines()Rückgabe der Zeilenliste im Dateiinhalt.
seek()Dateiposition ändern.
seekable()Rückgabe, ob die Datei uns die Änderung der Dateiposition erlaubt.
tell()Rückgabe der aktuellen Dateiposition.
truncate()Die Datei auf eine angegebene Größe anpassen.
writeable()Rückgabe, ob in die Datei geschrieben werden kann.
write()Eine angegebene Zeichenfolge in eine Datei schreiben.
writelines()Eine Liste von Strings in eine Datei schreiben.