Wie schreibe ich in modernem Python eine Zeile in eine Datei? Ich habe gehört, dass dies veraltet ist:
print >>f, "hallo"
Funktioniert "\n"
auf allen Plattformen oder sollte ich "\r\n"
auf Windows verwenden?
Wie schreibe ich in modernem Python eine Zeile in eine Datei? Ich habe gehört, dass dies veraltet ist:
print >>f, "hallo"
Funktioniert "\n"
auf allen Plattformen oder sollte ich "\r\n"
auf Windows verwenden?
Wenn Sie vermeiden möchten, write()
oder writelines()
zu verwenden und die Zeichenfolgen mit einem Zeilenumbruch selbst zu verbinden, können Sie alle Ihre Zeilen an print()
übergeben und den Zeilenumbruch als Trennzeichen und Ihren Dateigriff als Schlüsselwortargumente angeben. Dieses Snippet geht davon aus, dass Ihre Zeichenfolgen keine abschließenden Zeilenumbrüche haben.
print(line1, line2, sep="\n", file=f)
Sie müssen kein spezielles Zeichen für einen Zeilenumbruch am Ende setzen, weil print()
das für Sie erledigt.
Wenn Sie eine beliebige Anzahl von Zeilen in einer Liste haben, können Sie die Listenexpansion verwenden, um sie alle an print()
zu übergeben.
lines = ["The Quick Brown Fox", "Lorem Ipsum"]
print(*lines, sep="\n", file=f)
Es ist in Ordnung, "\n"
als Trennzeichen auf Windows zu verwenden, weil print()
es automatisch in einen Windows-CRLF-Zeilenumbruch ("\r\n"
) umwandeln wird.
Wenn ich viele neue Zeilen schreiben muss, definiere ich eine Lambda-Funktion, die eine print
-Funktion verwendet:
out = open(file_name, 'w')
fwl = lambda *x, **y: print(*x, **y, file=out) # FileWriteLine
fwl('Hi')
Dieser Ansatz hat den Vorteil, dass er alle Funktionen nutzen kann, die mit der print
-Funktion verfügbar sind.
Update: Wie von Georgy im Kommentarbereich erwähnt wurde, ist es möglich, diese Idee mit der partial
-Funktion weiter zu verbessern:
from functools import partial
fwl = partial(print, file=out)
Meiner Meinung nach ist dies ein funktionalerer und weniger kryptischer Ansatz.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.