Subproceso.check_output en Python
El módulo subproceso
es una parte integral de Python y ayuda a lograr la programación paralela. Este módulo puede generar nuevos procesos y trabajar con programas controlados mediante la herramienta de línea de comandos.
Almacena diferentes funciones que pueden ayudarnos a ejecutar comandos a través de una herramienta de línea de comandos. Una de esas funciones es la función subprocess.check_output()
en Python.
Este tutorial demostrará la función subprocess.check_output()
en Python.
Usa subprocess.check_output()
en Python
Esta función se introdujo con Python 2.7. Podemos usarlo para ejecutar un comando en el símbolo del sistema con argumentos en Python.
La función subprocess.check_output()
devolverá la salida del comando dado como bytes. Se genera un objeto CalledProcessError
si la función devuelve un código distinto de cero.
Un objeto CalledProcessError
tiene dos atributos. Estos son los atributos returncode
y output
.
A continuación se muestra un ejemplo sencillo de esta función.
import subprocess
print(subprocess.check_output(["echo", "Sample Message"], shell=False))
Producción :
b'Sample Message\n'
Ejecutamos el comando echo
en el ejemplo anterior mostrando un mensaje. El resultado devuelto es una cadena de bytes con el mensaje requerido.
Hay varios argumentos asociados con esta función. Como se ve en el comando, podemos proporcionar el comando con sus argumentos en la función.
Aparte de eso, también tenemos los argumentos stdin
, stderr
, shell
y universal_newlines
.
Los tres primeros argumentos son los identificadores de archivos de entrada, salida y error estándar. Podemos especificar sus valores como objetos PIPE
.
Como se discutió, el módulo subproceso
crea nuevos procesos secundarios. Las constantes PIPE
envían o reciben información del proceso padre.
El argumento shell
puede ser True
o False
. El comando se ejecutará a través del shell si se establece en True
.
Sin embargo, no se recomienda ejecutar comandos a través de shell a través de Python. Esto puede representar un grave riesgo de seguridad al leer entradas de fuentes no confiables que pueden generar amenazas de seguridad como la inyección de shell.
Si el argumento shell
se establece en True
, podemos usar la función pipes.quotes()
para escapar de los espacios en blanco y los metacaracteres del shell dentro de la cadena pasada.
El argumento universal_newlines
se establece en True
, luego el objeto proporcionado como entrada, salida y errores estándar se abren en modo de texto. En otras funciones se utilizaba el mismo argumento con un alias con el nombre del argumento text
.
Python 3.5 introdujo una nueva función llamada subprocess.run()
. Esta función ganó popularidad sobre el método tradicional subprocess.check_output()
para ejecutar comandos; devuelve un objeto ProcesoCompleto
.
La función subprocess.run()
también toma muchos argumentos, la mayoría de los cuales no están disponibles en el método subprocess.check_output()
. La mayoría de estos argumentos se pasan a través de la interfaz.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn