1672 votes

Comment imprimer sur la sortie stderr en python?

Je suis venu à travers au moins trois façons de le faire :

 import sys
 sys.stderr.write('spam\n')

 print >> sys.stderr, 'spam'

 from __future__ import print_function
 print('spam', file=sys.stderr)

Il semble contredire zen de python #13 , alors quelle est la meilleure façon de le faire? Quels sont les avantages ou les inconvénients d'une façon ou de l'autre?

Il devrait y avoir un - et de préférence seulement un moyen évident de le faire.

1456voto

MarcH Points 1868

J'ai trouvé ceci pour être le seul à court + flexible + portable + lisible:

from __future__ import print_function

...

def warning(*objs):
    print("WARNING: ", *objs, file=sys.stderr)

639voto

Mike Ramirez Points 3528

sys.stderr.write() , c'est mon choix, juste plus lisible et qui dit exactement ce que vous comptez faire et portable sur l'ensemble des versions.

Edit: être "pythonic' est un troisième pensé à moi au cours de la lisibilité et de la performance... avec ces deux choses à l'esprit, avec python 80% de votre code sera pythonic. liste de compréhension de la "grande chose" qui n'est pas utilisé aussi souvent (lisibilité).

339voto

Joachim Wuttke Points 637

print >> sys.stderr est allé dans Python3. http://docs.python.org/3.0/whatsnew/3.0.html dit:

Old: print >>sys.stderr, "fatal error"
New: print("fatal error", file=sys.stderr)

132voto

Frankovskyi Bogdan Points 1300

Mon choix est: print >> sys.stderr, 'spam' Parce que vous pouvez simplement imprimer des listes/dicts etc. sans le convertir en chaîne de caractères. print >> sys.stderr, {'spam': 'spam'} au lieu de: sys.stderr.write(str('spam': 'spam'))

54voto

Carl F. Points 2459

Je dirais que votre première approche:

print >> sys.stderr, 'spam' 

c'est le Un . . . évident façon de le faire", les autres ne L'est pas satisfaire à la règle n ° 1 ("il est Beau de mieux que de laid.")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X