Umgang mit Dateien in Python

In jeder Programmiersprache ist die Handhabung von Dateien ein wichtiger Aspekt. Und Python unterstützt auch das Arbeiten mit Dateien in verschiedenen Modi – z. B. Lesen und Schreiben in Dateien und mehr.

Am Ende dieses Tutorials können Sie:

  • Dateien in Python öffnen und lesen,
  • Zeilen aus einer Textdatei lesen,
  • schreiben und an Dateien anhängen und
  • Verwenden Sie Kontextmanager, um mit Dateien in Python zu arbeiten.

So lesen Sie Dateien in Python

Um eine Datei in Python zu öffnen, können Sie die allgemeine Syntax verwenden: open(‚file_name‘,’mode‘).

  • Hier ist file_name der Name der Datei.

Hinweis: Wenn sich die Datei, die Sie öffnen möchten, im aktuellen Arbeitsverzeichnis befindet, können Sie nur den Namen der Datei nennen. Wenn sie sich in einem anderen Ordner in Ihrer Arbeitsumgebung befindet, sollten Sie den Pfad zu der Datei angeben.

  • Der Parameter mode gibt den Modus an, in dem Sie die Datei öffnen möchten.

Der Standardmodus zum Öffnen einer Datei ist Lesen – gekennzeichnet durch den Buchstaben „r“. Es wird jedoch empfohlen, den Modus explizit anzugeben.

Bevor wir beginnen, werfen wir einen Blick auf die Datei lib.txt, die wir in diesem Beispiel verwenden werden.

📁 Laden Sie die in diesem Tutorial verwendete Textdatei und den Code von herunter dieses GitHub-Repository.

Das folgende Code-Snippet zeigt, wie Sie eine Textdatei „lib.txt“ in Python mit der Funktion open() öffnen und ihren Inhalt lesen können.

file = open('lib.txt','r')
contents = file.read()
print(contents)
file.close()


# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

Im obigen Beispiel

  • Die Funktion open() gibt ein Dateiobjekt zurück, und wir nennen es Datei.
  • Als Nächstes rufen wir die Methode read() in der Datei auf.
  • Die Variable content enthält nun den Inhalt der Datei. Und wir drucken es aus.
  • Abschließend schließen wir die Datei.

Wenn Sie jedoch vergessen, die Datei zu schließen, werden möglicherweise Ressourcen verschwendet. Wenn Sie mit einer großen Anzahl solcher Dateien arbeiten, kann es zu einer erheblichen Speicherauslastung kommen. Dies liegt daran, dass Sie mehrere Dateien geöffnet, aber keine davon geschlossen haben.

Lassen Sie uns nun einen besseren Weg zum Öffnen von Dateien mit lernen Kontextmanager. Das folgende Code-Snippet zeigt, wie Sie sie verwenden können.

with open('lib.txt','r') as f:
  contents = f.read()
  print(contents)

Wenn Sie Kontaktmanager verwenden, um mit Dateien zu arbeiten, müssen Sie die Methode close() nicht verwenden. Die Dateien werden automatisch geschlossen, nachdem die E/A-Operation abgeschlossen ist.

  So entsperren Sie detaillierte Streaming-Statistiken auf dem Apple TV

So lesen Sie Zeilen aus einer Datei in Python

In unserer Beispieltextdatei hatten wir nur wenige Zeilen. Das Einlesen aller Dateiinhalte auf einmal war also kein Problem.

Wenn Sie jedoch große Dateien einlesen müssen, ist die Verwendung der read()-Methode, wie oben gezeigt, möglicherweise nicht sehr effizient.

Wenn die Textdatei sehr groß ist, kann es sogar passieren, dass Ihnen bald der Speicherplatz ausgeht. Aus diesem Grund möchten Sie vielleicht schreibgeschützte Zeilen aus einer Textdatei einlesen, und Sie werden in diesem Abschnitt lernen, wie das geht.

Verwenden der readline()-Methode von Python zum Lesen von Zeilen aus einer Datei

Die Methode readline() liest jeweils eine Zeile aus der Datei.

Führen Sie das folgende Code-Snippet aus.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  line = f.readline()
  print(line)


# Output
Hello, there!

Here are a few helpful Python libraries:

Sie sehen, dass nach dem ersten Aufruf der Methode readline() die erste Zeile der Datei ausgedruckt wird. Und der zweite Aufruf der Methode readline() gibt die zweite Zeile in der Datei zurück.

Denn nach dem ersten Methodenaufruf steht der Dateizeiger am Anfang der zweiten Zeile.

In Python können Sie die Methode tell() verwenden, um die aktuelle Position des Dateizeigers abzurufen. Und um den Dateizeiger an eine bestimmte Stelle zu verschieben, können Sie die seek()-Methode verwenden.

Im folgenden Codeausschnitt verwenden wir f.seek(0) nach dem ersten Methodenaufruf. Dadurch wird der Dateizeiger an den Anfang der Textdatei verschoben. Deshalb wird beide Male die erste Zeile der Datei ausgedruckt.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  f.seek(0)
  line = f.readline()
  print(line)


# Output
Hello, there!

Hello, there!

Verwenden der readlines()-Methode von Python zum Lesen von Zeilen aus einer Datei

Es gibt eine andere eng verwandte Methode namens readlines().

Wenn Sie das folgende Code-Snippet ausführen, sehen Sie, dass die Methode readlines() eine Liste aller Zeilen in der Datei zurückgibt.

with open('lib.txt','r') as f:
  lines = f.readlines()
  print(lines)


# Output
['Hello, there!n', 'Here are a few helpful Python libraries:n', 
'1) NumPyn', '2) pandasn', '3) matplotlibn', 
'4) seabornn', '5) scikit-learnn', '6) BeautifulSoupn', 
'7) Scrapyn', '8) nltkn', '9) Bokehn', '10) statsmodelsn', 'n']

Verwenden von Pythons for Loop zum Lesen von Zeilen aus einer Datei

Um die Zeilen aus einer Textdatei einzulesen, könnten Sie auch die for-Schleife verwenden.

  So führen Sie Microsoft Word-Dokumente zusammen

Sobald Sie ein Dateiobjekt haben, können Sie die for-Schleife verwenden, um den Inhalt der Datei zu durchlaufen – Zeile für Zeile – und sie wie unten gezeigt ausdrucken. Beachten Sie, dass wir jeweils nur auf eine Zeile zugreifen und nicht den gesamten Inhalt der Datei einlesen.

with open('lib.txt','r') as f:
  for line in f:
    print(line, end='')

Hinweis: Wenn Sie die print()-Funktion von Python verwenden, ist das Standardtrennzeichen ein Zeilenumbruch—„n“-Zeichen. Aber in der Originaldatei haben wir diese neuen Zeilen nicht. Setzen Sie also das Trennzeichenargument auf einen leeren String: end = “, um den Inhalt der Datei so auszugeben, wie er ist.

So lesen Sie Inhaltsblöcke aus einer Datei in Python

In Python können Sie den Inhalt der Datei auch in Form kleiner Stücke einlesen.

Lesen Sie den folgenden Code durch:

  • Hier setzen wir die chunk_size auf 50. Das bedeutet, dass die ersten 50 Zeichen der Datei eingelesen werden und wir sie auch ausgeben.
  • Rufen Sie nun die Methode tell() für das Dateiobjekt f auf. Sie können sehen, dass sich der Dateizeiger jetzt an Position 51 befindet – was wie erwartet ist.
chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk)
  current = f.tell()
  print(f"Current position of file pointer: {current}")

# Output
Hello, there!
Here are a few helpful Python librar
Current position of file pointer: 51

Sie können diese Technik auch verwenden, um die gesamte Datei in kleinen Abschnitten einzulesen.

Das folgende Code-Snippet zeigt, wie Sie dies tun können.

chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk,end='')

  while(len(chunk)>0):
    chunk = f.read(chunk_size)
    print(chunk,end='')

# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

Hier verwenden wir eine While-Schleife, um den Inhalt der Datei zu lesen. Wir lesen den Inhalt der Datei in Blöcken der Größe 50 ein, bis wir das Ende der Datei erreichen. ✅

  Fix Field Browser enthält keine gültige Alias-Konfiguration

So schreiben Sie in Python in eine Datei

Um in Python in eine Textdatei zu schreiben, sollten Sie sie im Schreibmodus öffnen – indem Sie „w“ angeben.

Das folgende Code-Snippet zeigt, wie es geht.

with open('new_file.txt','w') as f:
  f.write('Hello, Python!')

Sie werden sehen, dass „new_file.txt“ in Ihrem Arbeitsverzeichnis erstellt wurde.

Führen Sie nun die obige Codezelle erneut aus.

Führen Sie in Ihrem Terminal den folgenden Befehl aus:

cat new_file.txt

# Output: Hello, Python!

Im Idealfall haben wir zweimal in die Datei geschrieben. Also Hallo, Python! hätte zweimal gedruckt werden sollen, ja?

Aber Sie werden sehen, dass es nur einmal gedruckt wurde. Nun, das liegt daran, dass Sie beim Öffnen einer Datei im Schreibmodus (w) im Grunde den Inhalt der Datei mit neuem Inhalt überschreiben.

Wenn Sie am Ende der Datei etwas hinzufügen möchten, ohne vorhandene Inhalte zu überschreiben, sollten Sie die Datei im Anhängemodus öffnen. Wie das geht, erfahren Sie im nächsten Abschnitt.

So fügen Sie in Python eine Datei an

Wenn Sie Inhalte an eine Datei anhängen möchten, ohne sie zu überschreiben, öffnen Sie sie im Anhängemodus.

Verwenden Sie dazu `’a‘ – a für append – und geben Sie den Modus explizit an.

Führen Sie als Nächstes die folgende Codezelle zweimal aus.

with open('new_file.txt','a') as f:
  f.write('Hello, Python!')

Beachten Sie, wie der Text jetzt zweimal ausgedruckt wird, da wir ihn an die Datei angehängt haben.

cat new_file.txt

# Output: Hello, Python!Hello, Python!

Fazit

Lassen Sie uns kurz zusammenfassen, was wir in diesem Tutorial besprochen haben.

  • Sie haben die gängigen Datei-I/O-Vorgänge wie Lesen, Schreiben und Anhängen an eine Datei kennengelernt.
  • Außerdem haben Sie gelernt, wie Sie die seek()-Methode verwenden, um den Dateizeiger an eine bestimmte Position zu verschieben, und
  • wie man die Methode tell() verwendet, um die aktuelle Position des Dateizeigers abzurufen.

Ich hoffe, Sie fanden dieses Tutorial hilfreich. Nachdem Sie nun gelernt haben, wie Sie mit Textdateien in Python arbeiten, erfahren Sie, wie Sie mit JSON-Dateien in Python arbeiten.

Verwandt:

Überprüfen Sie die Länge einer Liste in Python in 3 Schritten.