Cómo ejecutar un comando o programa externo en Python

Cómo ejecutar un comando o programa externo en Python

La pitón subproceso El módulo permite generar nuevos procesos y ejecutar comandos o scripts externos desde los scripts de Python. Puede instalar la última versión de Python usando estos tutoriales. Además, hay una serie de IDE disponibles para Python. Como instalar pycharm python ide en los sistemas ubuntu.

Python SCRPT al comando del sistema de llamadas

Creemos su primer programa para enumerar todos los archivos disponibles en el directorio actual. Puede agregar cualquier número de parámetros de línea de comandos con el comm (,) separado.

#!/usr/bin/python3 subprocesamiento de subprocesamiento de importación.llamar (["ls", "-l"])
1234#!/usr/bin/python3 importación de subprocesos de subprocesos.llamar (["ls", "-l"])

Dónde-

  • La declaración de importación se utiliza para cargar el formulario del módulo de subprocesos de la biblioteca estándar de Python
  • la llamada es la función del módulo de subprocesos, se utiliza para ejecutar comandos externos

Impresión de Python sin nueva línea

Los comandos de Python terminan con la nueva salida de línea "\ n", que puede sobrescribir usando end = "" significa que la próxima salida del comando estará en la misma línea. Ver el siguiente ejemplo.

#!/usr/bin/python3 importación de subprocesos de importación ("\ ntoday es",) subprocesamiento.llamar (["fecha", "+%d"])
123456#!/usr/bin/python3 importación de subprocesos de importación ("\ ntoday is", end = "") subprocesos.llamar (["fecha", "+%d"])

Resultado:

Hoy es el 11/01/18 

Ejemplo de Python con expansión de concha

El subprocesamiento predeterminado.llamar no expandir los comodines de shell ni realizar sustitución de comandos. Esto se puede anular pasando el valor verdadero para el argumento de shell. Recuerde que el uso de shell = true podría ser un problema de seguridad para su sistema ejecutando el comando dañino.

#!/usr/bin/python3 importación # comando de ejecución sin subproceso de expansión de shell.llamar (['echo', 'bienvenido $ user']) # Ejecución de un comando con subprocesamiento de expansión de shell.llamar ('echo bienvenido $ user', shell = true)
123456789#!/usr/bin/python3 importación # comando de ejecución sin shell expansionsubprocess.llamar (['echo', 'bienvenido $ user']) # Ejecución de un comando con shell expansionsubprocess.llamar ('echo bienvenido $ user', shell = true)

Resultado:

Bienvenido $ usuario Bienvenido root 

Puede ver en la salida anterior que el primer comando imprime un nombre de variable porque se ejecutó sin expansión de shell. El segundo comando ejecutado con expansión de shell obtiene el valor de la variable de entorno de usuario. Además, puede ver que todo el comando ahora se pasa como una cadena y no como una lista de cadenas.

Otros ejemplos útiles de Python

Puede hacer que sus scripts sean más legibles y hermosos almacenando un comando largo en una variable y luego ejecutarlo.

#!/usr/bin/python3 importación de subprocesos cmd = "grep -re 'fatal'/var/log/> búsquedas.txt "subprocesos.llamar (cmd, shell = true)
123456#!/usr/bin/python3 importación de subprocesos cmd = "grep -re 'fatal'/var/log/> búsquedas.txt "subprocesos.llamar (cmd, shell = true)

También puede almacenar la salida de cualquier comando a una variable utilizando un subproceso.GetOutput. Esto también almacenará si se genera algún mensaje de error.

#!/usr/bin/python3 importación de subprocesos de importación ("La salida del comando 'pwd' es:", flush = true) outprocess.Impresión GetOutput ('PWD') (salida)
12345678#!/usr/bin/python3 importación de subprocesos de importación ("La salida del comando 'pwd' es:", flush = true) outprocess.Impresión GetOutput ('PWD') (salida)

Resultado:

La salida del comando 'pwd' es:/root/python/scripts