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

Linda Hamilton
Libérer: 2024-11-03 12:31:03
original
189 Les gens l'ont consulté

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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
Copier après la connexion

Utilisation

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

<code class="python">with Capturing() as output:
    do_something(my_object)</code>
Copier après la connexion

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!

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
Derniers articles par auteur
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal