"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo capturar la salida del programa de manera efectiva en Python: más allá de las soluciones básicas

Cómo capturar la salida del programa de manera efectiva en Python: más allá de las soluciones básicas

Publicado el 2024-11-08
Navegar:274

How to Capture Program Output Effectively in Python: Beyond Basic Solutions

Capturar la salida del programa: más allá de las soluciones ingenuas

En las secuencias de comandos Python, capturar la salida del programa para su posterior procesamiento es una necesidad común. Si bien las soluciones ingenuas pueden parecer sencillas, a menudo se quedan cortas. Considere el siguiente script que escribe en la salida estándar:

# writer.py
import sys

def write():
    sys.stdout.write("foobar")

El intento de capturar la salida usando el siguiente código falla:

# mymodule.py
from writer import write

out = write()
print(out.upper())

Para capturar eficazmente el resultado, se requiere una solución más sólida. Un enfoque implica modificar el flujo de salida estándar del sistema:

import sys
from cStringIO import StringIO

# Redirect stdout to a StringIO object
backup = sys.stdout
sys.stdout = StringIO()

# Perform the write operation
write()

# Retrieve and restore stdout
out = sys.stdout.getvalue()
sys.stdout.close()
sys.stdout = backup

# Process the captured output
print(out.upper())

Context Manager para Python 3.4:

Para Python 3.4 y versiones posteriores, hay disponible una solución más simple y concisa usando contextlib. administrador de contexto de redirección_stdout:

from contextlib import redirect_stdout
import io

f = io.StringIO()
# Redirect stdout to f using the context manager
with redirect_stdout(f):
    help(pow)

# Retrieve captured output from f
s = f.getvalue()

Este elegante enfoque simplifica el proceso de captura de resultados, haciéndolo más fácil de manejar en sus scripts de Python.

Declaración de liberación Este artículo se reimprime en: 1729147521 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3