Captura de la salida
Lea stdout y stderr
Captura de la salida es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.
Capturar stdout
Para leer lo que imprime un comando, pase capture_output=True. El texto aparece en el atributo stdout del resultado.
import subprocess
cp = subprocess.run(['echo', 'hello'], capture_output=True)
print(cp.stdout)Bytes frente a texto
De forma predeterminada, la salida son bytes. Pase text=True para obtener cadenas decodificadas, que normalmente es lo que necesita.
import subprocess
cp = subprocess.run(['echo', 'hello'], capture_output=True, text=True)
print(repr(cp.stdout))Eliminar el salto de línea final
La salida de los comandos suele terminar en un salto de línea. Utilice .strip() para eliminarlo antes de usar el valor.
import subprocess
cp = subprocess.run(['echo', 'value'], capture_output=True, text=True)
clean = cp.stdout.strip()
print('[' + clean + ']')Capturar stderr
Los errores normalmente se envían a stderr, que se captura por separado. Así se mantienen diferenciadas la salida normal y los mensajes de error.
import subprocess
cp = subprocess.run(['ls', '/no/such/dir'], capture_output=True, text=True)
print('stdout:', repr(cp.stdout))
print('stderr:', cp.stderr.strip())Usar la salida en el código
La salida capturada es simplemente una cadena, por lo que puede analizarla: dividirla en líneas, convertir números o pasarla al resto del programa.
import subprocess
cp = subprocess.run(['printf', 'a\nb\nc\n'], capture_output=True, text=True)
lines = cp.stdout.splitlines()
print('line count:', len(lines))
print(lines)Redirigir stderr a stdout
Para combinar la salida de error con el flujo normal, establezca stderr=subprocess.STDOUT. Ambas aparecerán entonces en stdout.
import subprocess
cp = subprocess.run(['ls', '/no/such/dir'], stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, text=True)
print(cp.stdout.strip())Proporcionar entrada
Proporcione datos a la entrada estándar de un comando mediante el argumento input. Aquí enviamos texto a cat.
import subprocess
cp = subprocess.run(['cat'], input='piped in\n', capture_output=True, text=True)
print(cp.stdout.strip())La alternativa check_output
subprocess.check_output() ejecuta un comando y devuelve directamente su stdout, generando una excepción en caso de error. Es una forma práctica de capturar la salida en una sola línea.
import subprocess
out = subprocess.check_output(['echo', 'quick'], text=True)
print(out.strip())Descartar la salida
Para silenciar un comando, redirija sus flujos a subprocess.DEVNULL.
import subprocess
cp = subprocess.run(['echo', 'silent'], stdout=subprocess.DEVNULL)
print('return code only:', cp.returncode)Gestionar errores con salida
Al utilizar check=True, la excepción CalledProcessError generada aún contiene los valores capturados de output y stderr para el diagnóstico.
import subprocess
try:
subprocess.run(['ls', '/missing'], capture_output=True, text=True, check=True)
except subprocess.CalledProcessError as e:
print('failed:', e.returncode)
print('stderr:', e.stderr.strip())Integrarlo todo
Una función auxiliar habitual ejecuta un comando, comprueba que se haya completado correctamente y devuelve texto limpio. Esto encapsula el patrón más común.
import subprocess
def capture(cmd):
cp = subprocess.run(cmd, capture_output=True, text=True, check=True)
return cp.stdout.strip()
print(capture(['echo', 'final result']))Comprobación rápida
Compruebe su comprensión de la captura de salida.
Resumen
Ha aprendido a capturar la salida:
capture_output=Truejunto context=Trueproporcionastdoutystderrcomo cadenas.- Combine los flujos con
stderr=subprocess.STDOUT; siléncielos conDEVNULL. - Proporcione la entrada mediante
input=;check_outputes una alternativa abreviada. - Los errores contienen la salida capturada para facilitar la depuración.
A continuación: leer variables de entorno y el módulo os.
Preguntas frecuentes
¿La lección «Captura de la salida» es gratis?
Sí — el texto completo de «Captura de la salida» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Captura de la salida»?
Lea stdout y stderr Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Python Academy?
No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Captura de la salida»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Python Academy?
Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Ejecución de comandos con subprocess
- Captura de la salida
- Entorno y módulo os
- shutil para operaciones con archivos