Wenn wir eine neue Zeile in eine Datei haben wir Code schreiben müssen:Warum hat Python keine writeln() Methode?
file_output.write('Fooo line \n')
Gibt es irgendwelche Gründe, warum Python nicht eine writeln()
Methode?
Wenn wir eine neue Zeile in eine Datei haben wir Code schreiben müssen:Warum hat Python keine writeln() Methode?
file_output.write('Fooo line \n')
Gibt es irgendwelche Gründe, warum Python nicht eine writeln()
Methode?
Es wurde eine symmetrische Schnittstelle der file
Verfahren bereitzustellen, weggelassen, und weil ein writeln()
keinen Sinn machen würde :
read()
Streichhölzer write()
: Sie arbeiten beide auf Rohdatenreadlines()
Matches writelines()
: sie arbeiten beide auf den Leitungen einschließlich ihrer EOLsreadline()
selten verwendet wird; ein Iterator macht die gleiche Arbeit (mit Ausnahme des optionalen size
param)A writeline()
(oder writeln()
) würde im Wesentlichen die gleiche wie write()
sein, da es keine EOL hinzufügen würde (das Verhalten von writelines()
entsprechen) .
Der beste Weg, um ein print
in eine Datei zu imitieren ist die spezielle Print-to-Datei Syntax von Python 2.x oder das file
Schlüsselwort Argument der print()
Funktion zu nutzen, wie Daniel vorgeschlagen.
Persönlich bevorzuge ich die print >>file, ...
Syntax über file.write('...\n')
.
@eftinis, da 'readline' existiert, ist Ihre Aussage von" Symmetrie "nicht wirklich gültig. Die seltene Verwendung einer "readline" -Methode schließt auch ihren Vorteil in bestimmten Situationen nicht aus (zum Beispiel Parser, die eine oder zwei Zeilen vorauslesen müssen). – SimplyKnownAsG
Wahrscheinlich kein wirklicher Grund, nur dass es wirklich einfach ist, eine neue Zeile zu schreiben, wenn Sie sie brauchen, warum also die Dateischnittstelle mit einer extra Methode überladen, nur um das zu tun?
Verwenden Sie normalerweise die in meiner Frage verwendete Syntax? – systempuntoout
Pythons 'print'-Funktion druckt standardmäßig eine neue Zeile am Ende des Strings. –
Um Ihre rhetorische Frage zu beantworten: Effizienz. Betrachte (1) 'f.write (stuff); f.write ('\ n') (2) 'f.write (stuff + '\ n')' (3) 'f.writeln (stuff)' –
In Python 2, Verwendung:
print >>file_output, 'Fooo line '
In Python 3, zu verwenden:
print('Fooo line ', file=file_output)
Danke für die Hinweise – systempuntoout
print()
ist die Funktion, die Sie suchen. Wie bei einem Großteil des Kernpolymorphismus in Python wird das Drucken durch eine eingebaute Funktion anstelle von Methoden bereitgestellt (genau wie len()
, next()
, repr()
usw.!).
Die print()
-Funktion, die die universelle Schnittstelle ist, macht es auch vielseitiger, ohne dass die Dateiobjekte selbst es implementieren müssen. In diesem Fall wird standardmäßig durch Newline beendet, aber es kann zum Beispiel in dem Funktionsaufruf, gewählt werden:
print("text", file=sys.stderr, end="\n")
in Ihrem vorgeschlagenen Anwendungsfall wird alle Dateiobjekte müssen nicht nur eine .write()
Methode implementieren (jetzt verwendet von print()
), aber auch .writeln()
, und vielleicht noch mehr! Dieser funktionsbasierte Polymorphismus macht Python sehr reich, ohne die Schnittstellen zu belasten (erinnern Sie sich, wie Ente-Typisierung funktioniert).
Hinweis: Dieses Modell war schon immer das Zentrum von Python.Es ist nur reiner in meinen Beispielen, die sich auf Python 3 beziehen
Ich fühle, dass es sollte. Die nächste Sache, die Sie verwenden können, ist:
Umdrehen Sie die Frage: Warum verwenden einige Sprachen verschiedene Funktionen für die Ausgabe abhängig davon, ob Sie eine Endlinie Pause oder nicht? Das reicht zumindest bis Pascal, das ich schon früh gelernt habe, aber ich bevorzuge die explizite Darstellung auf Zeilenumbrüchen in der Ausgabe. – dmckee
Sie können [diese Antwort] (http://stackoverflow.com/a/16085543/910963) aus einem anderen Beitrag heraus überprüfen, wenn Sie es brauchen – SimplyKnownAsG