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

Comment capturer la sortie stdout du script en Python ?

Barbara Streisand
Libérer: 2024-10-17 15:02:03
original
1089 Les gens l'ont consulté

How to Capture Script stdout Output in Python?

Capturer la sortie stdout à partir de scripts en Python

Lorsque vous travaillez avec des scripts externes, il devient souvent nécessaire de capturer leur sortie stdout pour un traitement ultérieur. Une approche courante consiste à utiliser la fonction write() pour imprimer la sortie, qui peut ensuite être stockée dans une variable. Cependant, cette approche ne fonctionne pas toujours, comme l'illustre le script suivant :

<code class="python"># module writer.py
import sys

def write():
    sys.stdout.write("foobar")</code>
Copier après la connexion

Pour capturer la sortie de la fonction write(), une solution impliquant le module cStringIO a été proposée :

<code class="python">import sys
from cStringIO import StringIO

# setup the environment
backup = sys.stdout

# ####
sys.stdout = StringIO()     # capture output
write()
out = sys.stdout.getvalue() # release output
# ####

sys.stdout.close()  # close the stream 
sys.stdout = backup # restore original stdout

print out.upper()   # post processing</code>
Copier après la connexion

Cependant, il existe des moyens plus efficaces et pythoniques pour atteindre cet objectif :

En utilisant contextlib.redirect_stdout (Python 3.4)

Cette méthode utilise contextlib Gestionnaire de contexte .redirect_stdout pour rediriger temporairement la sortie stdout vers un objet StringIO :

<code class="python">from contextlib import redirect_stdout
import io

f = io.StringIO()
with redirect_stdout(f):
    help(pow)
s = f.getvalue()</code>
Copier après la connexion

Utiliser directement io.StringIO

Une autre approche consiste à créer directement un objet StringIO et Acheminez manuellement la sortie stdout vers celle-ci :

<code class="python">import io

output = io.StringIO()
sys.stdout = output
write()
sys.stdout.seek(0)
captured_output = output.read()</code>
Copier après la connexion

En implémentant ces méthodes, les développeurs peuvent capturer et traiter efficacement la sortie du script sans recourir à des solutions de contournement complexes.

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