Ejecute el comando Shell y obtenga resultados en Python

Salman Mehmood 15 febrero 2024
  1. Ejecute comandos CMD desde un script de Python y obtenga resultados usando os.system()
  2. Ejecute comandos CMD desde una secuencia de comandos de Python y obtenga resultados mediante el módulo Subproceso
Ejecute el comando Shell y obtenga resultados en Python

En este artículo, aprenderemos a ejecutar comandos cmd desde un script de Python con la ayuda de os.system(). También aprenderemos cómo podemos ejecutar comandos cmd desde el script de una manera más fácil con la ayuda del módulo subproceso en Python.

Ejecute comandos CMD desde un script de Python y obtenga resultados usando os.system()

Ejecutamos comandos de terminal en el símbolo del sistema o en cualquier otro terminal para diferentes propósitos. Pero, a veces, es necesario ejecutar un comando particular dentro del script.

Veremos cómo podemos ejecutarlos directamente dentro del script de Python. Es útil cuando trabajamos con la configuración del servidor.

Primero, permítanos mostrarle algunos comandos que funcionan en la terminal, como dir, cd o md.

Comandos de terminal en el símbolo del sistema

Ahora, veremos cómo podemos incluir los mismos en el script de Python. Para ello, importaremos un módulo llamado os.

El módulo os nos ayudará a interactuar con nuestro sistema operativo. El módulo os tiene un amplio soporte para las tareas del sistema operativo, como la gestión de archivos y carpetas.

Saltemos al código. El sistema () es un método que ejecuta el comando en el shell similar, por lo que si le damos cualquier comando, seguirá adelante y los ejecutará de la forma en que los ejecutaríamos en la terminal.

La función del sistema también puede ejecutar un montón de comandos. Ejecuta todos los comandos que puede ejecutar en la terminal.

Usaremos el bloque try, y dentro de este bloque usaremos el método system(), que nos ayudará a interactuar con el sistema operativo usando la terminal. Si el bloque intentar no ejecuta el comando especificado, pasaremos al bloque excepto.

Dentro del método system(), tenemos que pasar nuestros comandos, pero el tipo de comando es cmd. Para eso, usamos /k, y dentro de una comilla simple o doble, tenemos que escribir nuestro comando.

import os

try:
    os.system('cmd /k "date"')
except:
    print("Could not execute command")

Ejecutemos y veamos si esto nos da el resultado exacto.

The current date is: 24/08/2022
Enter the new date: (dd-mm-yy)

Podemos ver que la salida es la misma que da el símbolo del sistema.

Hay muchos comandos que puede ejecutar. Puede abrir el Bloc de notas o la Calculadora, o puede ver la información de su sistema y mucho más.

Abrir aplicaciones y mostrar información del sistema desde Python Script

Si desea obtener el contenido de lo que devuelve el comando, puede obtenerlo utilizando la función popen() del módulo os. Dentro de esta función, podemos pasar el comando y usar el método readlines() para obtener su contenido.

Podemos usar muchos métodos para obtener datos limpios. Depende de ti.

import os

DATA = os.popen("help").readlines()[5].strip("\n")
print(DATA)

Obtener el contenido que devuelve el comando

Podemos usar estos comandos en cualquier lugar, como clase, bucles y funciones. Esto funcionará correctamente como lo hace sin envolverlo en una función.

import os


def CMD_Com():
    DATA = os.popen("help").readlines()[5].strip("\n")
    print(DATA)


CMD_Com()

Producción :

CACLS          Displays or modifies access control lists (ACLs) of files.

Ejecute comandos CMD desde una secuencia de comandos de Python y obtenga resultados mediante el módulo Subproceso

Interactuar con subprocesos es una habilidad esencial para tener. No se recomienda usar el módulo os para ejecutar un comando de terminal dentro del script de Python.

Usar os.system() para ejecutar el comando de terminal es una forma muy simplificada de ejecutar un comando en Python.

El os.system() tiene una funcionalidad limitada; la forma correcta es usar un módulo llamado subproceso, que hace que no sea demasiado difícil ejecutar comandos de terminal. Usando el módulo subprocess, podemos ejecutar todos los comandos del sistema operativo en los que estamos trabajando actualmente.

Así es como podemos ejecutar todos los comandos existentes en un sistema operativo, como abrir el Bloc de notas o verificar el directorio de trabajo actual, o cualquier otra operación que podamos ejecutar usando el módulo subproceso.

import subprocess

# subprocess.Popen('notepad')
# subprocess.Popen('systeminfo')
subprocess.Popen("dir", shell=True)

Producción :

 Directory of C:\Users\Dell\Downloads\demo

24/08/2022  07:01 pm    <DIR>          .
24/08/2022  07:01 pm    <DIR>          ..
25/08/2022  01:47 am               460 demo.py
               1 File(s)            460 bytes
               2 Dir(s)  32,532,512,768 bytes free

Puede obtener más información sobre el módulo subproceso desde aquí.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn