Schreibzeilen in Python

Subodh Adhikari 10 Oktober 2023
  1. Verwenden Sie die Methoden write() und writelines(), um in Python angegebenen Text in eine Datei zu schreiben
  2. Verwenden Sie die Methoden write() und writelines(), um Iterables in eine Datei in Python zu schreiben
Schreibzeilen in Python

Dieses Tutorial wird den Unterschied zwischen den Methoden write() und writelines() in Python vorstellen und erklären.

Verwenden Sie die Methoden write() und writelines(), um in Python angegebenen Text in eine Datei zu schreiben

Die Methode write() erwartet als Argument einen String und schreibt ihn in die Datei. Wenn wir eine Liste von Strings bereitstellen, wird eine Ausnahme ausgelöst. Die Methode writelines() erwartet ein iterierbares Argument. Außerdem zeigt die Methode write() die Ausgabe an, liefert jedoch kein Zeilenumbruchzeichen, während die Methode writelines() die Ausgabe anzeigt und am Ende des Strings ein Zeilenumbruchzeichen bereitstellt. Es ist wichtig zu beachten, dass writelines() nicht automatisch nach jedem Item im Iterable eine neue Zeile einfügt. Wir müssen selbst eine neue Linie bereitstellen. Wenn wir viele Zeilen in eine Datei schreiben müssen, könnte writelines() eine bessere Option sein. Es funktioniert gut, weil es keine temporäre verkettete Zeichenkette erstellt, sondern nur über die Zeilen iteriert.

Im folgenden Programm haben wir die Datei samplefile.txt im Schreibmodus geöffnet. Die Variable lines ist ein Tupel, d. h. eine unveränderliche Ansammlung von Strings. Wenn wir versuchen, das Programm auszuführen, hat es einen Fehler vom Ausnahmetyp ausgelöst. Die Argumente, die wir der Methode write() übergeben haben, sind ein Tupel, das den Fehler verursacht hat. Hier haben wir die Methode with für die Dateibehandlung verwendet. Diese Methode bietet eine bessere Syntax und Ausnahmebehandlung. Daher empfiehlt es sich, gegebenenfalls die Methode with zu verwenden. Die Methode ist hilfreich, da alle geöffneten Dateien geschlossen werden, nachdem eine Datei fertig ist.

Beispielcode:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines = line1, nl, line2, nl, line3, nl
with open("samplefile.txt", "w") as f:
    f.write(lines)

Ausgabe:

TypeError: write() argument must be str, not tuple

In einem ähnlichen Kontext wird bei Verwendung von writelines() das Programm erfolgreich ausgeführt und eine Datei namens samplefile.txt erstellt, in der lines als Argument an die Methode writelines() übergeben wird.

Beispielcode:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines = line1, nl, line2, nl, line3, nl
with open("samplefile.txt", "w") as f:
    f.writelines(lines)

Ausgabe:

Good
Morning
Sunshine

Für dasselbe Programm werden die mehreren Zeilen zu einer einzigen String-Variablen namens lines_joined verkettet, die leicht als Argument für die Methode write() akzeptiert wird.

Beispielcode:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines_joined = line1 + nl + line2 + nl + line3 + nl
with open("samplefile.txt", "w") as f:
    f.write(lines_joined)

Ausgabe:

Good
Morning
Sunshine

Verwenden Sie die Methoden write() und writelines(), um Iterables in eine Datei in Python zu schreiben

Die Methode join() nimmt alle Elemente in einem Iterable und fügt sie zu einem String zusammen. Im folgenden Programm haben wir die Methode join() mit '\n' als Kleber verwendet, um den String in lines zu verketten. Es ist ein besserer Ansatz für die Verkettung, anstatt den Operator + zu verwenden.

Beispielcode:

# python 3.x
lines = ["Hello", "World"]
with open("hello.txt", "w") as f:
    f.write("\n".join(lines))

Ausgabe:

Hello
World

Es ist weniger effizient, die Methode join() für eine extrem lange Liste von Strings zu verwenden. In einem solchen Fall wird vor dem Schreiben eine völlig neue und sehr lange Zeichenkette im Speicher erstellt. Im folgenden Programm haben wir also einen Generatorausdruck verwendet, um die Strings in den Zeilenumbruch zu schreiben. Hier werden die Daten stückweise geschrieben.

Beispielcode:

# python 3.x
lines = ["Hello", "World"]
with open("hello.txt", "w") as f:
    for l in lines:
        f.write("%s\n" % l)

Ausgabe:

Hello
World

Das gleiche Programm wie oben wird durch die Methode writelines() implementiert. Es verwendet einen Generatorausdruck und erstellt dynamisch Zeichenketten mit Zeilenumbruch. Die Methode writelines() iteriert über diese Folge von Strings und schreibt jedes Item.

Beispielcode:

# python 3.x
lines = ["Hello", "World"]
with open("hello.txt", "w") as file:
    file.writelines("%s\n" % t for t in texts)

Ausgabe:

Hello
World

Verwandter Artikel - Python File