Ejecutar el comando Bash en Python
-
Ejecute comandos Bash en Python usando el método
run()
del módulosubprocess
-
Ejecute comandos Bash en Python usando el método
Popen()
del módulosubprocess
Este tutorial explicará varias formas de ejecutar comandos bash en Python. Bash es un intérprete de lenguaje de comandos o shell que se utiliza en los sistemas operativos Linux y Unix. Y el comando bash es una instrucción de un usuario al sistema operativo para realizar una tarea específica, como el comando cd
para cambiar el directorio actual, el comando mkd
para crear un nuevo directorio y el comando ls
para enumerar archivos y subdirectorios en un directorio, etc.
Ejecute comandos Bash en Python usando el método run()
del módulo subprocess
El método run()
del módulo subprocess
toma el comando pasado como una cadena. Para obtener la salida o el error de salida del comando, debemos establecer el argumento stdout
y el argumento stderr
en PIPE
. El método run
devuelve un proceso completo que contiene stdout
, stderr
y returncode
como atributos.
El código de ejemplo muestra cómo utilizar el método run()
para ejecutar un comando bash en Python.
from subprocess import PIPE
comp_process = subprocess.run("ls", stdout=PIPE, stderr=PIPE)
print(comp_process.stdout)
Ejecute comandos Bash en Python usando el método Popen()
del módulo subprocess
El método Popen()
del módulo subprocess
tiene una funcionalidad similar al método run()
, pero es complicado de usar. El método Popen()
, a diferencia del método run()
, no devuelve un objeto de proceso completo como salida, y el proceso iniciado por el método Popen()
debe manejarse por separado, lo que hace que sea complicado usar.
En lugar del proceso completo, el método Popen()
devuelve un objeto de proceso como salida. El proceso devuelto necesita ser eliminado usando el método process.kill()
o process.terminate()
.
Al igual que el método run()
, necesitamos establecer los argumentos stdout
y stderr
de Popen()
para obtener la salida y el error del comando. Y se puede acceder a la salida y al error a través del objeto de proceso devuelto utilizando el método process.communicate
.
El siguiente ejemplo de código demuestra cómo ejecutar un comando bash usando el método Popen()
y cómo obtener los valores stdout
y stderr
y luego matar el proceso en Python:
from subprocess import PIPE
process = subprocess.Popen("ls", stdout=PIPE, stderr=PIPE)
output, error = process.communicate()
print(output)
process.kill