¿Te gustaría aprender Python desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!

 

Unix es un sistema operativo que fue desarrollado allá por 1969 en AT&T Bell Labs por Ken Thompson y Dennis Ritchie. Existen muchísimos comandos de Unix muy interesantes que podemos utilizar para llevar a cabo distintas tareas. La cuestión es, ¿podemos usar dichos comandos directamente dentro de un programa de Python? Eso es lo que veremos en este tutorial.

El comando de Unix ls lista todos los archivos existentes en un directorio. Si escribes ls dentro de un script de Python, esto es lo que obtendrás al ejecutar el programa:

Traceback (most recent call last):
  File "test.py", line 1, in <module>
    ls
NameError: name 'ls' is not defined

Como ves, Python interpreta a ls como si fuera una variable, y por eso, requiere que se defina (es decir, que se inicialice). Es decir, no trata al comando ls como si fuese un comando de Unix.

os.system()

Una solución para llevar a cabo esto es utilizar os.system() del módulo os de Python. Como puedes ver en la documentación, os.system():

Ejecuta un comando (string) en un subshell. Esto se lleva a cabo llamando a la función system() de Standard C, y cuenta con las mismas limitaciones.

Por lo tanto, podemos ejecutar el comando ls de Unix tal que así:

import os
os.system('ls')

Esto devolverá el listado de ficheros de tu directorio actual, que es donde está localizado tu programa .py.

Vamos a ver otro ejemplo. Si quieres conocer la fecha y hora actual, puedes utilizar el comando date de Unix de este modo:

import os
os.system('date')

En mi caso, esto es lo que he obtenido al ejecutar el anterior script:

Sat Dec 3 11:29:56 CEST 2016

call()

Aunque os.system() funciona, no es muy recomendable utilizarla ya que se considera un poco antigua y obsoleta. Una solución más recomendable es la función call(args) del módulo subprocess de Python. Como se menciona en la documentación sobre esta función:

Ejecuta el comando descrito en sus argumentos. Espera a que se complete el comando, y después, devuelve el atributo returncode.

Si queremos ejecutar el comando de Unix ls utilizando este método, podemos hacer lo siguiente:

from subprocess import call
call('ls')

Ahora vamos a ver cómo obtener la fecha utilizando el módulo subprocess, pero esta vez vamos a hacer el ejemplo un pelín más interesante:

import subprocess 
time = subprocess.Popen('date', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = time.communicate()
print 'Son las ', output

El anterior ejemplo puede ser ejecutado utilizando simplemente check_output() tal que así:

import subprocess 
time = subprocess.check_output('date')
print 'Son las', time

La salida del anterior script es:

Son las Sat Dec 3 11:36:21 CEST 2016

Los ejemplos anteriores muestran la flexibilidad del uso de las diferentes funciones de subprocess y cómo podemos pasar los resultados a las distintas variables para llevar a cabo otras operaciones.

Como hemos visto en este tutorial, los comandos de Unix pueden ser llamados y ejecutados utilizando el módulo subprocess, que proporciona mucha flexibilidad al trabajar con comandos de Unix a través de sus diferentes funciones. Puedes obtener más información acerca de este módulo y sus diferentes funciones en la documentación oficial de Python.

Te esperamos en los próximos artículos en donde hablaremos mas acerca de estos temas que hoy en día son de importancia e interés en el mundo de la tecnología.

¿Te gustaría aprender Python desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax
()
x
Abrir chat
¿Quieres aprender a programar?
Hola 👋,
¿Te interesa información de nuestros cursos?