Comment imprimer pour stderr en Python
Ce tutoriel explique comment écrire sur la sortie d’erreur standard, stderr
, en Python. Il donne également quelques exemples de codes pour expliquer les différentes façons d’écrire dans stderr
, car la syntaxe a changé au fil du temps.
Imprimer vers stderr
en Python 3.x
Pour Python3.x, la fonction print
a un argument de mot-clé file
qui spécifie la destination de l’impression. Il s’agit de sys.stdout
par défaut mais peut être sys.stderr
ou même un chemin de fichier.
Elle imprime le message vers stderr
si file=sys.stderr
. Un exemple de code est donné ci-dessous :
import sys
print("Error", file=sys.stderr)
Production :
Error
Impression vers stderr
en Python 2.x
Pour Python 2.x, l’instruction print
peut imprimer le message vers une destination de type file-like
comme stdout
, stderr
, ou un chemin de fichier. Cet objet file-like
est spécifié après l’instruction >>
. Voir l’exemple ci-dessous.
import sys
print >>sys.stderr, "Error Detected!"
Production :
Error Detected!
Utilisez le fichier sys.stderr
pour imprimer vers stderr
Le module sys
de Python fournit des informations précieuses et des fonctionnalités clés. La méthode sys.stderr.write()
peut être utilisée. La méthode sys.stderr.write()
imprime le message en tant que paramètre donné à la stderr
. Voir l’exemple ci-dessous.
import sys
sys.stderr.write("Error!")
Production :
Error!
Utilisez le module logging
pour imprimer vers stderr
Le module logging
en Python est spécifiquement créé pour enregistrer les messages. Le module de journalisation peut être utilisé pour imprimer sur stderr
après avoir défini la configuration de base. Le module logging.basicConfig()
prend le format message
en entrée, et logging.getLogger()
retourne un objet de la logging
. Le log.warning()
prend le texte warning
et l’imprime dans stderr
.
Un exemple de base de cette approche est présenté ci-dessous :
import logging
logging.basicConfig(format="%(messages)s")
log = logging.getLogger()
log.warning("Error Found!")
Production :
Error Found!
Syed Moiz is an experienced and versatile technical content creator. He is a computer scientist by profession. Having a sound grip on technical areas of programming languages, he is actively contributing to solving programming problems and training fledglings.
LinkedIn