Python >> Tutoriel Python >  >> Python

Comment imprimer sur le flux d'erreurs standard en Python

L'impression dans le flux d'erreurs standard de Python vous aidera à mieux gérer la gestion des erreurs dans vos programmes. Découvrez comment procéder dans cet article.

Les flux standards permettent à un programme d'interagir avec son environnement pendant son exécution. Il peut s'agir d'accepter les entrées du clavier (en utilisant le input() fonction en Python), ou afficher un message à l'écran (en utilisant le print() fonction). Il existe trois flux standard en informatique :entrée standard, sortie standard et erreur standard; ils sont communément appelés stdin, stdout et stderr, respectivement. Le module sys vous permet d'accéder à ces flux en Python.

Pour ceux d'entre vous qui découvrent Python, notre cours Python Basics utilise des exercices interactifs pour vous enseigner les bases de la programmation informatique. Ou consultez la piste Learn Programming with Python, qui regroupe plusieurs cours adaptés aux débutants. Suivre l'un ou l'autre de ces chemins vous aidera à apprendre Python plus rapidement.

Qu'est-ce que le flux d'erreurs standard de Python ?

L'erreur standard est un flux de sortie qui peut être affiché à l'écran ou redirigé vers un fichier journal. Cela signifie que tous les messages d'erreur peuvent être analysés pour comprendre la cause de tout bogue. Il est indépendant de la sortie standard et peut être redirigé séparément.

Il existe plusieurs façons d'imprimer sur l'erreur standard en Python. Nous en discuterons ci-dessous, en vous donnant un autre outil pour vous aider à penser comme un développeur Python.

3 façons d'imprimer dans le flux d'erreurs standard en Python

1. Imprimer vers stderr Utilisation de print()

La première méthode pour imprimer sur l'erreur standard consiste à utiliser le print() intégré fonction. Nous avons un article décrivant tout ce que vous devez savoir sur la fonction print() de Python; vous pouvez vous y référer pour plus de détails. Pour l'instant, voici un exemple d'utilisation de print() :

>>> import sys
>>> print('Error message', file=sys.stderr)

Voici la sortie :

Error message

Ici, nous avons utilisé l'argument optionnel file pour rediriger la sortie vers l'erreur standard. Par défaut, la sortie du print() fonction serait dirigée vers la sortie standard. Si vous souhaitez économiser un peu de frappe, vous pouvez définir votre propre fonction :

>>> def print_error(*args, **kwargs):
... 	print(*args, file=sys.stderr, **kwargs)

Ensuite, vous pouvez exécuter la fonction comme suit :

>>> print_error('Error message')

Voici la sortie :

Error message

Vous pouvez également spécifier des arguments de mots clés supplémentaires à donner au print() déclaration. Le mot-clé end vous permet de définir ce qui est imprimé à la fin de la sortie :

>>> print_error('Error message', end=', good luck debugging me!')

Voici maintenant la sortie :

Error message, good luck debugging me!

2. Impression vers stderr Utilisation de sys.stderr.write()

La deuxième méthode courante pour imprimer à l'erreur standard en Python ne repose pas sur la fonction print(); il utilise sys.stderr.write(). Voici un exemple :

>>> sys.stderr.write('Error message\n')

Voici la sortie :

Error message
Out[1]: 14

La fonction affiche le message d'erreur et renvoie un entier. Le renvoi de l'entier ne se produit que lorsque la fonction est exécutée dans la console Python interactive ; il représente la longueur de la chaîne. Le caractère de nouvelle ligne ('\n' ) compte comme un caractère et est inclus ici car sys.stderr.write() ne passe pas à une nouvelle ligne après l'affichage du texte.

3. Impression vers stderr Utilisation de la journalisation

La dernière méthode utilise le logging module, qui a des fonctions pour vous aider à enregistrer les événements pendant l'exécution de vos programmes. Par défaut, ce module imprime les messages sur l'erreur standard. Vous pouvez importer la bibliothèque et consigner un avertissement comme suit :

>>> import logging
>>> logging.basicConfig(format='%(message)s')
>>> log = logging.getLogger(__name__)
>>> log.warning('Error message')

Ici, nous configurons le format de la sortie, instancions un objet logger avec la variable __name__ , et enregistrez un avertissement. Voici la sortie :

Error message

Cela enregistre le message d'erreur avec le niveau AVERTISSEMENT. Il existe d'autres fonctions qui vous permettent de consigner les erreurs à différents niveaux et qui ont beaucoup plus de fonctionnalités. Consultez la documentation de Python pour plus de détails.

Utilisez le flux d'erreurs standard de Python pour travailler plus intelligemment

Dans cet article, nous avons présenté plusieurs méthodes pour imprimer dans le flux d'erreurs standard de Python. N'oubliez pas que ce flux est indépendant de la sortie standard. En tirant parti du flux d'erreurs standard, vous vous assurez qu'il y a peu de chances que votre programme se bloque avant que les erreurs ne soient enregistrées - ce qui est une façon dangereuse pour vos programmes de se terminer. La journalisation des erreurs facilite le débogage des programmes.