Ejecutar el comando Bash en Python

Muhammad Waiz Khan 30 enero 2023
  1. Ejecute comandos Bash en Python usando el método run() del módulo subprocess
  2. Ejecute comandos Bash en Python usando el método Popen() del módulo subprocess
Ejecutar el comando Bash en Python

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