En este tutorial aprenderemos sobre el Comando del Sistema en Python. Anteriormente aprendimos sobre Números Aleatorios en Python.
Comando del Sistema en Python
Mientras se hace un programa en Python, puede que necesites ejecutar algunos comandos de shell para tu programa. Por ejemplo, si usas el IDE Pycharm
, puede que notes que hay una opción para compartir tu proyecto en GitHub. Y probablemente sepas que la transferencia de archivos se realiza con git, que se opera usando la línea de comandos. Entonces, Pycharm ejecuta algunos comandos de shell en segundo plano para hacerlo. Sin embargo, en este tutorial aprenderemos algunos conceptos básicos sobre cómo ejecutar comandos de shell desde tu código Python.
Función os.system() de Python
Podemos ejecutar comandos del sistema usando la función os.system(). Según el documento oficial, se ha dicho que
Esto se implementa llamando a la función estándar C system(), y tiene las mismas limitaciones.
Sin embargo, si el comando genera alguna salida, se envía al flujo de salida estándar del intérprete. No se recomienda usar este comando. En el siguiente código intentaremos conocer la versión de git usando el comando del sistema git --version
.
import os
cmd = "git --version"
returned_value = os.system(cmd) # returns the exit code in unix
print('returned value:', returned_value)
La siguiente salida se encontró en Ubuntu 16.04 donde git ya está instalado.
git version 2.14.2
returned value: 0
Tenga en cuenta que no estamos imprimiendo la salida del comando de versión de git en la consola, se imprime porque la consola es el flujo de salida estándar aquí.
Función subprocess.call() de Python
En la sección anterior, vimos que la función os.system()
funciona bien. Pero no es la forma recomendada de ejecutar comandos de shell. Usaremos el módulo subprocess de Python para ejecutar comandos del sistema. Podemos ejecutar comandos de shell utilizando la función subprocess.call()
. Vea el siguiente código que es equivalente al código anterior.
import subprocess
cmd = "git --version"
returned_value = subprocess.call(cmd, shell=True) # returns the exit code in unix
print('returned value:', returned_value)
Y la salida será también la misma.
Función subprocess.check_output() de Python
Hasta ahora, ejecutamos los comandos del sistema con la ayuda de Python. Pero no pudimos manipular la salida producida por esos comandos. Usando la función subprocess.check_output()
podemos almacenar la salida en una variable.
import subprocess
cmd = "date"
# devuelve la salida como una cadena de bytes
returned_output = subprocess.check_output(cmd)
# usando la función decode() para convertir la cadena de bytes a una cadena de texto
print('Current date is:', returned_output.decode("utf-8"))
Producirá una salida como la siguiente
Current date is: Thu Oct 5 16:31:41 IST 2017
Así que, en las secciones anteriores hemos discutido sobre ideas básicas para ejecutar comandos del sistema en Python. Pero no hay límite en el aprendizaje. Si lo deseas, puedes aprender más sobre el comando del sistema en Python utilizando el módulo subprocess desde la documentación oficial.
Source:
https://www.digitalocean.com/community/tutorials/python-system-command-os-subprocess-call