Advertisement
  1. Code
  2. Python

Cómo ejecutar comandos de Unix en tu programa de Python

Scroll to top
Read Time: 3 min

() translation by (you can also view the original English article)

Unix es un sistema operativo que fue desarrollado alrededor de 1969 por Ken Thompson y Dennis Ritchie en AT&T Bell Labs. Existen muchos comandos de Unix interesantes que podemos utilizar para llevar a cabo diferentes tareas. La pregunta es, ¿podemos usar tales comandos directamente dentro de un programa de Python? Esto es lo que te enseñaré en este tutorial.

El comando Unix ls hace una lista de todos los archivos del directorio. Si pones ls en un script de Python, esto es lo que obtendrás cuando ejecutes el programa:

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

Esto muestra que el intérprete de Python está tratando ls como una variable y requiere que se defina (es decir, se inicialice), y no lo ha tratado como un comando de Unix.

os.system()

Una solución a este problema es utilizar os.system () del módulo os de Python.

Como se menciona en la documentación, os.system():

Ejecuta el comando (una cadena o string) en una subshell. Esto se implementa llamando al Standard C function system(), y tiene las mismas limitaciones.

Así que, podemos ejecutar el comando ls en Python de la siguiente forma:

1
import os
2
os.system('ls')

Esto devolverá la lista de archivos en tu directorio actual, que es donde se localiza tu programa .py.

Veamos otro ejemplo. Si deseas devolver la fecha actual y la hora, puedes usar el comando date de Unix del modo siguiente:

1
import os
2
os.system('date')

En mi caso, esto fue lo que obtuve como resultado del script anterior:

Tue May 24 17:29:20 CEST 2016

call()

A pesar de que os.system() funciona, no se recomienda ya que se considera un poco viejo y obsoleto. Una solución más recomendable es la función call(args) del módulo de subprocess de Python. Como se señala en la documentación acerca de esta función:

Ejecuta el comando descrito por args. Espera a que el comando se complete, luego devuelve el atributo returncode.

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

1
from subprocess import call
2
call('ls')

Veamos cómo podemos devolver la fecha utilizando el módulo subprocess, pero hagamos que el ejemplo sea más interesante.

1
import subprocess 
2
time = subprocess.Popen('date', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
3
output, err = time.communicate()
4
print 'It is', output

El ejemplo anterior se puede ejecutar de forma más simple usando check_output (), así:

1
import subprocess 
2
time = subprocess.check_output('date')
3
print 'It is', time

El resultado de los scripts anteriores es:

It is Tue May 24 19:14:22 CEST 2016

Los ejemplos anteriores muestran la flexibilidad al usar las diferentes funciones de subprocess, y cómo podemos pasar los resultados a las variables para realizar más operaciones.

Conclusión

Como vimos en este tutorial, los comandos de Unix pueden ser llamados y ejecutados utilizando el módulo subprocess, el cual ofrece mucha flexibilidad cuando se trabaja con comandos de Unix mediante sus diferentes funciones. Puedes aprender más sobre este módulo y sus diferentes funciones en la documentación de Python.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.