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
1058 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!

source:php
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