BASH desde Python -Prestado de http://gedece.blogspot.com.ar-


Buscando encontré  una forma piola de redireccionar salidas de consola a variables en python. El que me dio esta solución fue “Demasiado Personal” ¡Gracias!

 

Hoy tuve que ajustar un programa hecho en python que me manda información automáticamente, y, entre otras cosas, me informa mi propia IP externa por email. Anteriormente usaba comandos python para bajar una página web e interpretar sus lineas. Esta vez, sin embargo, ya que tenía que modificar justo esa parte, decidí implementar algo distinto.

Para eso tuve que realizar la investigación de como usar bash desde dentro de un programa Python. Encontré dos alternativas, una con os y otra con commands. Hay más, creo que una es popen, pero como command implementa una interfase para popen, me pareció suficiente.

Vayamos primero por la opción que usé primero, que no fue la que terminé usando finalmente.

import os
resultado = os.system(“ls”)

Este comando guarda en resultado un cero si el comando ejecutado se ejecutó con éxito, y un valor distinto a cero si no lo hizo. La salida del comando se produce por la consola, y no podemos traer el resultado a Python. Esto fue lo que hizo que lo descartase, ya que yo justamente precisaba el resultado real, y no el valor de éxito del comando.

Entonces tuve que usar la otra alternativa
import commands
resultado = commands.getoutput(“ls”)

Este comando no trae un cero en caso de éxito, sino que devuelve un string con el resultado del comando ls, que lista el directorio. Por supuesto que hay comandos especiales para manipular archivos y directorios sin recurrir a comandos bash, ls es solo usado a modo de demostración. Una aclaración importante: el módulo commands solo funciona bajo Linux. Como mi programa no necesita ser portable, lo he usado. Si sus necesidades son diferentes, tal vez lo solucionen con popen.

Fuente: http://gedece.blogspot.com.ar/2009/10/bash-desde-python.html

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s