Maison >développement back-end >Tutoriel Python >Comment capturer la sortie d'une fonction Python avec un gestionnaire de contexte ?

Comment capturer la sortie d'une fonction Python avec un gestionnaire de contexte ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-03 12:31:03267parcourir

How to Capture Output from a Python Function with a Context Manager?

Interception de la sortie d'une fonction Python avec capture

Souvent, les bibliothèques tierces impriment des informations sur la sortie standard pendant l'exécution. Bien que cela puisse être utile pour le débogage, cela peut également encombrer la sortie et perturber d'autres processus. Pour prendre le contrôle de cette sortie, envisagez d'utiliser un gestionnaire de contexte pour la capturer.

Implémentation

from io import StringIO <br>import sys</p>
<p>class Capture (liste) :</p>
<pre class="brush:php;toolbar:false">def __enter__(self):
    self._stdout = sys.stdout
    sys.stdout = self._stringio = StringIO()
    return self
def __exit__(self, *args):
    self.extend(self._stringio.getvalue().splitlines())
    del self._stringio    # free up some memory
    sys.stdout = self._stdout

Utilisation

Pour capturer la sortie dans un bloc de code spécifique :

<code class="python">with Capturing() as output:
    do_something(my_object)</code>

Après le bloc, la variable de sortie contiendra une liste de toutes les lignes imprimées sur la sortie standard.

Techniques avancées

  • Captures multiples : ce gestionnaire de contexte peut être utilisé plusieurs fois pour accumuler la sortie.
  • Intégration avec contextlib.redirect_stdout() (Python 3.4) : cela offre un moyen alternatif d'obtenir une redirection à l'aide de io.StringIO.

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!

Déclaration:
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
Article précédent:Maison_Price_PredictionArticle suivant:Maison_Price_Prediction