2008/06/10

Ejecutar programas externos desde python

ACTUALIZACIÓN: Si estás ejecutando muchas acciones interaccionando con otros programas en python puede ser interesante Fabric. Super recomendado!!!!


Existen muchas alternativas para ejecutar programas desde python.
Aquí dejo unos ejemplos:

import os
os.system('ls /home/')

Existen multiples variantes del comando os.exec(). Por ejemplo, ejecutar el programa indicado reemplazando el proceso actual:
os.execl('/bin/ls')

Lo mismo que antes, pero con un listado de parámetros (atención: recordad que la lista de argumentos empieza en 0, no en 1):
os.execl('/bin/ls', '/bin/ls', '-l', '-i')

Ejecuta el comando buscando en $PATH y reemplazando el proceso actual:
os.execlp('ls', 'ls', '-lisa')

Si lo que necesitas es crear un nuevo proceso primero:
if os.fork()==0:
    os.execlp('ls')
else:
    print 'Fork has failed!'

Y si queremos ver la salida del programa ejecutado:
import commands

a = commands.getstatusoutput('ls')

aList = a.split('\n')

En lugar de usar la opción de hacer un fork() y obtener un nuevo proceso que controlaremos con su PID, es recomendable usar el módulo subprocess y su clase Popen. Más sobre esto y otros temas relacionados en el aquí.
       
   

2 comentarios:

Anónimo dijo...

pringao pones un enlace con protector de link para sacar pasta... que tirao eres y que poco respeto por tus posibles lectores

https://shorte.st/es/

por cierto estas violando el GPL de https://www.python.org/about/legal/

en el que se especifica que sin permiso expreso de la fundacion la monetizacion de
sus patentes 'python' es delito....

ellos no ganan por crear el producto y tu por un copy paste de cualquier libro
tutorial etc etc pretendes sacar veneficio.

mucha suerte, quedas denunciado como violador de la licencia GPL
https://es.wikipedia.org/wiki/GNU_General_Public_License

nachouve dijo...

Anónimo, gracias por tu comentario aunque sea tan poco educado. Lamento que te haya molestado tanto como para insultar. Pensaré en si retirar el uso de estas redirecciones dado que hay personas como tú que se puedan sentirse "no respetadas" (cosa que no es mi intención).

Sin embargo, no entiendo muy bien tu razonamiento cuando acusas de violar licencias. ¿Qué libertad de la GPL se está infringiendo por enlazar documentación de este modo? ¿Qué tipo de monetización de python está prohibida, dado que millones de aplicaciones con python y scripts se están usando para hacer negocio, libros, etc.?

Hay mucha gente ganando dinero con el software libre, incluido los propios creadores de mucho del software libre y de los contenidos y servicios relacionados. Por eso no entiendo que enlazar contenidos con links a través de acortadores de este tipo sea ilegal.