Schreibzeilen in Python
-
Verwenden Sie die Methoden
write()
undwritelines()
, um in Python angegebenen Text in eine Datei zu schreiben -
Verwenden Sie die Methoden
write()
undwritelines()
, um Iterables in eine Datei in Python zu schreiben
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
- So erhalten Sie alle Dateien eines Verzeichnisses
- Wie man in Python Text an eine Datei anhängt
- Wie man prüft, ob eine Datei in Python existiert
- Wie man Dateien mit einer bestimmten Endung nur in Python findet
- Wie man bestimmte Zeilen aus einer Datei in Python liest
- Dateiberechtigungen in Python ändern