Beachten Sie, dass die Aussage von Tim vollkommen richtig ist: Es ist nur eine offensichtliche Art und Weise, es zu tun: print()
. Die anderen beiden Möglichkeiten, die Sie erwähnen, haben unterschiedliche Ziele.
Wenn wir die Ziele der drei Alternativen zusammenfassen wollen:
print
ist die High-Level-Funktion, die Sie etwas schreiben lassen (eine andere Datei oder) nach stdout. Es bietet eine einfache und lesbare API, mit einigen fantastischen Optionen, wie die einzelnen Elemente getrennt werden, oder ob Sie einen Terminator hinzufügen oder nicht möchten. Dies ist, was Sie die meiste Zeit tun möchten.
sys.stdout.write
ist nur eine Methode der Dateiobjekte. Der wirkliche Punkt von sys.stdout
ist, dass Sie es weitergeben können, als wäre es eine andere Datei. Dies ist nützlich, wenn Sie mit einer Funktion arbeiten müssen, die eine Datei erwartet, und Sie möchten, dass sie den Text direkt auf stdout ausgibt.
Mit anderen Worten sollten Sie sys.stdout.write
überhaupt nicht verwenden. Sie gehen einfach um sys.stdout
zu Code, der eine Datei erwartet.
Hinweis: in python2 gibt es einige Situationen, wo waren die print
Anweisung schlechter Code erzeugt als sys.stdout.write
aufrufen. Mit der Funktion print
können Sie jedoch Separator und Terminator definieren und damit fast alle diese Fälle vermeiden.
os.write
ist ein low-level Aufruf zum Schreiben in eine Datei. Sie müssen den Inhalt manuell codieren, und Sie müssen den Dateideskriptor explizit übergeben. Dies soll nur niedrigen Code behandeln, der aus irgendeinem Grund nicht über die höheren Schnittstellen implementiert werden kann. Sie möchten dies fast nie direkt aufrufen, da es nicht benötigt wird und eine schlechtere API als der Rest hat.
Beachten Sie, wenn Sie Code haben, die Dinge auf eine Datei aufschreiben sollte, ist es besser zu tun:
my_file.write(a)
# ...
my_file.write(b)
# ...
my_file.write(c)
als:
print(a, file=my_file)
# ...
print(b, file=my_file)
# ...
print(c, file=my_file)
Weil es trocken ist. Mit print
müssen Sie immer file=
wiederholen. Dies ist in Ordnung, wenn Sie nur in eine Stelle des Codes schreiben müssen, aber wenn Sie 5/6 verschiedene Schreibvorgänge haben, ist es viel einfacher, die write
Methode direkt aufzurufen.
Möchten Sie es für die Protokollierung verwenden? Dann würde ich das Logging-Modul vorschlagen: https://docs.python.org/3/library/logging.html – RvdK
Ich denke, 'print' ist der einzige offensichtliche Weg (sagen Sie, Sie wissen nicht, Python und Sie kommen aus Perl , was könntest du versuchen?). Dies kann auch für magische Methoden gesagt werden. –
@NoctisSkytower richtig, Sie sollten auch "drucken" einige Text "'. Notieren Sie die fehlenden Klammern. – RvdK