python

Python: ejecutar comandos del sistema operativo

Hoy veremos cómo ejecutar órdenes en la terminal o línea de comandos usando Python; pasando argumentos a dichos comandos.

Es decir, usar Python para ejecutar un comando que se ejecutaría en la terminal ya sea de Windows o Linux, por ejemplo cd, ls, tree, etcétera.

Es importante mencionar que no vamos a obtener la salida del comando, sino que vamos a ejecutar el comando y ver si su código de salida es el correcto (es decir, que se ejecutó de manera correcta terminando con un estado 0) así que será silencioso.

Lo hago de esta forma porque en ocasiones utilizo Python para compilar otros programas, pero es un lío pasar argumentos o hacerlo portable entre Linux y Windows.

Función check_output de Python

Como lo dije, esta función revisa la salida (bueno, el código de salida) de la ejecución de un comando. Lo que me gusta es que funciona tanto en Windows y Linux, además de que lanza una excepción si el comando va mal, y muestra los mensajes de error.

Por cierto, en este caso se usa con shell en True y queda algo así:

See the gist on github.

Con esto puedes ejecutar cualquier comando del cual no te interesa la salida, solo te interesa saber si se ejecutó bien o mal.

Ejemplo para ejecutar comandos usando Python

Voy a poner un ejemplo que ocupo para algunos de mis proyectos de Go. Cuando los voy a llevar a producción, además de hacer otras cosas, compilo el ejecutable con:

gofmt -w . && go build

No hace falta que lo entiendas. Lo único que hago es formatear el código de Go y luego compilar.

En caso de que todo vaya bien, no se va a generar una excepción. Por ejemplo, si intento compilar a Go desde un comando de Python haría esto:

See the gist on github.

Al ejecutar, debido el código de Go está bien, no hay excepciones.

En cambio, si de alguna manera modifico el código de Go para que no compile, y luego ejecuto el script de Python de nuevo, se va a generar la excepción pues la compilación no fue exitosa.

Ejecución de comandos en Python usando check_output

En la imagen de arriba puedes ver ambas salidas. En la primer ejecución el comando va bien y no genera excepción, pero para la segunda ocasión, debido a que modifiqué el código de Go para que no compilara, se generó el error y me mostró los mensajes, que en este caso indican que no está definido el paquete fmt de Go.

Si te interesa, este es el código de Go:

See the gist on github.

Conclusión

Como lo dije, este comando permite ejecutar órdenes del sistema operativo que escribiríamos en la terminal, pero no obtiene su salida, sino que simplemente verifica su estado de salida.

Recuerda que esto funciona en Linux y Windows.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

5 días hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

5 días hace

Imprimir PDF generado con HTML

Hoy vamos a ver programar la impresión de un PDF generado a partir de HTML…

7 días hace

JavaScript: llenar select con arreglo

En este tutorial básico de JavaScript con HTML vamos a ver cómo llenar una lista…

2 semanas hace

Imprimir PDF a partir de URL

En este artículo se presenta una guía para imprimir un PDF a partir de una…

2 semanas hace

Imprimir PDF a partir de base64

En este post voy a enseñarte cómo imprimir un PDF a partir de su representación…

2 semanas hace

Esta web usa cookies.