Archivo de la categoría: modulos

#2 Modulo: bisect

El módulo bisect sirve para mapear números dentro de un rango con algo. Por ejemplo si quiero indicar qué tan grande es un número con palabras, podría hacer algo así:

>>> from bisect import bisect
>>> grado = ['muy chico', 'chico', 'mediano', 'grande', 'muy grande', 'gigante']
>>> rango = [5, 20, 100, 1000, 10000]
>>> def tamano(numero):
... return grado[bisect(rango, numero)]
...
>>> tamano(25)
'mediano'
>>> tamano(-5)
'muy chico'
>>> tamano(156)
'grande'
>>> tamano(1056)
'muy grande'
>>> tamano(26542)
'gigante'
>>>

Lo que está haciendo es ver dónde cae el número que le paso, y devolviéndome la posición de la lista (grado) en la que cae ese número. Ésto puede ser muy útil para hacer comprobaciones de rango, en vez de repetir muchas líneas con:

if 5 <= numero < 20:
... return 'chico'
elif 20 <= numero < 100:
... return 'mediano'

Fuente: la documentación del módulo.

#1 Modulo: commands

Para capturar la salida de un comando generalmente utilizaba el módulo subprocess de Python de esta forma:

>>> from subprocess import Popen, PIPE
>>> Popen(['date'], stdout=PIPE).stdout.read()
'mar abr 29 17:08:17 ART 2008\n'
>>>

Hoy viendo el código fuente de un programa (pydf) encontré que utilizaba el módulo commands y como no lo conocía me fijé de qué se trataba. Sirve para hacer lo mismo de una manera más sencilla y legible:

>>> import commands
>>> commands.getoutput('date')
'mar abr 29 17:04:22 ART 2008'
>>>

PD: funciona sólamente en Unix

Etiquetado ,