Articles

GeeksforGeeks

Voraussetzungen:

  • Zugriffsmodi
  • Öffnen einer Datei
  • Schließen einer Datei

Python bietet eingebaute Funktionen zum Erstellen, Schreiben und Lesen von Dateien. Es gibt zwei Arten von Dateien, die in Python gehandhabt werden können, normale Textdateien und Binärdateien (geschrieben in Binärsprache, 0s und 1s). In diesem Artikel werden wir uns mit dem zeilenweisen Lesen aus einer Datei beschäftigen.

Zeilenweise lesen

Verwenden von readlines()

readlines() wird verwendet, um alle Zeilen auf einmal zu lesen und sie dann als jede Zeile ein String-Element in einer Liste zurückzugeben. Diese Funktion kann für kleine Dateien verwendet werden, da sie den gesamten Dateiinhalt in den Speicher einliest und ihn dann in einzelne Zeilen aufteilt. Wir können über die Liste iterieren und das Zeilenumbruchzeichen ‚\n‘ mit der Funktion strip() entfernen.

Beispiel:

Python3

L =

file1 =open('myfile.txt', 'w')
file1.writelines(L)
file1.close()
file1 =open('myfile.txt', 'r')
Lines =file1.readlines()
count =0
forline inLines:
count +=1

print("Line{}: {}".format(count, line.strip()))



Ausgabe:

Line1: GeeksLine2: forLine3: Geeks

Verwendung von readline()

Die Funktion readline() liest eine Zeile der Datei und gibt sie in Form einer Zeichenkette zurück. Sie nimmt einen Parameter n, der die maximale Anzahl von Bytes angibt, die gelesen werden sollen. Sie liest jedoch nicht mehr als eine Zeile, auch wenn n die Länge der Zeile überschreitet. Es ist effizient, wenn eine große Datei gelesen wird, da es nicht alle Daten in einem Rutsch holt, sondern Zeile für Zeile. readline() gibt die nächste Zeile der Datei zurück, die am Ende ein Zeilenumbruchzeichen enthält. Außerdem gibt sie eine leere Zeichenkette zurück, wenn das Ende der Datei erreicht ist.

Beispiel:

Python3

L =
file1 =open('myfile.txt', 'w')
file1.writelines((L))
file1.close()
file1 =open('myfile.txt', 'r')

count =0

whileTrue:
count +=1

line =file1.readline()
ifnotline:
break
print("Line{}: {}".format(count, line.strip()))
file1.close()



Ausgang:

Line1 GeeksLine2 forLine3 Geeks

Verwendung der for-Schleife

Ein iterables Objekt wird von der Funktion open() beim Öffnen einer Datei zurückgegeben. Die letzte Möglichkeit, eine Datei zeilenweise einzulesen, besteht darin, in einer for-Schleife über ein Dateiobjekt zu iterieren. Dabei machen wir uns eine eingebaute Python-Funktion zunutze, die es uns erlaubt, in Kombination mit der Verwendung des iterable-Objekts in einer for-Schleife implizit über das Dateiobjekt zu iterieren. Dieser Ansatz benötigt weniger Codezeilen, was immer die beste Praxis ist, die es wert ist, befolgt zu werden.

Beispiel:

Python3

L =
file1 =open('myfile.txt', 'w')
file1.writelines(L)
file1.close()
file1 =open('myfile.txt', 'r')

count =0

print("Using for loop")

forline infile1:
count +=1
print("Line{}: {}".format(count, line.strip()))
file1.close()



Ausgabe:

Using for loopLine1: GeeksLine2: forLine3: Geeks

Mit-Anweisung

In den obigen Ansätzen muss die Datei jedes Mal, wenn sie geöffnet wird, explizit geschlossen werden. Wenn man vergisst, die Datei zu schließen, kann das zu verschiedenen Fehlern im Code führen, d. h. viele Änderungen in Dateien werden erst dann wirksam, wenn die Datei ordnungsgemäß geschlossen wird. Um dies zu verhindern, kann die With-Anweisung verwendet werden. Die With-Anweisung in Python wird in der Ausnahmebehandlung verwendet, um den Code sauberer und besser lesbar zu machen. Sie vereinfacht die Verwaltung von allgemeinen Ressourcen wie Dateiströmen. Beachten Sie im folgenden Codebeispiel, wie die Verwendung der With-Anweisung den Code sauberer macht. Es besteht keine Notwendigkeit, file.close() aufzurufen, wenn Sie die with-Anweisung verwenden. Die with-Anweisung selbst sorgt für die ordnungsgemäße Erfassung und Freigabe von Ressourcen.

Beispiel:

Python3

L =
with open("myfile.txt", "w") as fp:
fp.writelines(L)
count =0
print("Using readlines()")

with open("myfile.txt") as fp:

Lines =fp.readlines()
forline inLines:
count +=1
print("Line{}: {}".format(count, line.strip()))

count =0

print("\nUsing readline()")
with open("myfile.txt") as fp:
whileTrue:
count +=1
line =fp.readline()
ifnotline:
break
print("Line{}: {}".format(count, line.strip()))

count =0

print("\nUsing for loop")
with open("myfile.txt") as fp:
forline infp:
count +=1
print("Line{}: {}".format(count, line.strip()))



Ausgabe:

Using readlines()Line1: GeeksLine2: forLine3: GeeksUsing readline()Line1: GeeksLine2: forLine3: GeeksUsing for loopLine1: GeeksLine2: forLine3: Geeks

Eine Antwort schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.