Maison > développement back-end > Tutoriel Python > Comment capturer la sortie standard en Python ?

Comment capturer la sortie standard en Python ?

DDD
Libérer: 2024-11-03 13:34:30
original
800 Les gens l'ont consulté

How to Capture Standard Output in Python?

Capturer la sortie standard en Python

En Python, il est souvent utile de capturer la sortie imprimée sur la sortie standard (stdout) pour diverses raisons , par exemple en l'enregistrant pour un traitement ou un test ultérieur. Un scénario courant implique l'appel d'une fonction à partir d'une bibliothèque, telle que do_something(my_object), qui imprime les informations sur la sortie standard.

Pour capturer le résultat de cet appel de fonction, l'approche suivante peut être utilisée :

  1. Implémenter un gestionnaire de contexte de concaténation (Capturer) :

    • Définir une classe nommée Capturing qui hérite de la liste.
    • Implémenter son Méthodes __enter__ et __exit__ pour capturer la sortie stdout.
    • Dans sa méthode __enter__, stockez la sortie standard actuelle dans self._stdout et redirigez la sortie standard vers un tampon StringIO en mémoire (self._stringio).
    • Dans sa méthode __exit__, ajoutez la sortie capturée à sa liste interne (self) après avoir restauré la sortie standard à son état d'origine.
  2. Utilisez le gestionnaire de contexte :

    • Utilisez une instruction with pour créer une instance de Capturing.
    • Passez l'instance comme argument à la méthode __init__ de Capturing pour ajouter sa sortie capturée à l'instance créée dans la précédente étape.
  3. Obtenir la sortie capturée :

    • Après avoir quitté le bloc with, la variable de sortie contient maintenant le sortie stdout sous forme de liste de chaînes.

Exemple d'utilisation :

<code class="python">from contextlib import redirect_stdout  # redirect_stdout is only available in Python 3.4 or later

def do_something(my_object):
    print('stdout info')

with redirect_stdout(StringIO()) as stdout:
    do_something(my_object)
    captured_output = stdout.getvalue()</code>
Copier après la connexion

Utilisation de la syntaxe Python 3.4 :

<code class="python">with StringIO() as output:
    with redirect_stdout(output):
        do_something(my_object)
    captured_output = output.getvalue()</code>
Copier après la connexion

En suivant ces étapes, vous pouvez facilement capturer la sortie standard d'un appel de fonction Python, vous permettant d'utiliser les informations imprimées à des fins de traitement, de débogage ou de test ultérieurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal