[Python-es] cual es la mejor solución

Manuel Alejandro Cerón Estrada ceronman en gmail.com
Mie Oct 27 22:57:20 CEST 2010


Hola.

El día 27 de octubre de 2010 22:18, Jhonatan Sneider Salguero Villa
<sney2002 en gmail.com> escribió:
> Hola, hace rato que sigo la lista, pero esta es la primera vez que la uso.
> La duda que tengo es la siguiente:
>
> estoy creando un programa para descarga de archivos de megaupload ayudándome
> de software ya existente.
> para resolver los captchas uso tesseract y para la descargas wget, el
> programa ya funciona,
> pero ahora quiero agregar una funcionalidad que permita especificar un
> directorio para escanear cada cierto tiempo
> en búsqueda de archivos que contengan links y asi por ejemplo poder usar
> dropbox para agregar descargas remotamente.
> Para la funcionalidad de escanear directorios he pensado en lo siguiente:
>
> import os
> import time
>
> def scan_dir( path ):
>    # verificar que path sea un directorio si no lanzar una excepción
>    while True:
>        for file in os.listdir( path ):
>            if not file in done and not get_from_file( os.path.join( path,
> file ) ):
>                done.append( file )
>
>        time.sleep( SLEEP_TIME )
>
> que les parece, ¿seria mejor usar threads?, alguien ha tenido que hacer algo
> parecido, cual seria la mejor solución.
> muchas gracias por su atención.

Te recomiendo darle una mirada a pyinotify, es un wrapper para
inotify, una función de Linux para monitorear el sistema de archivos.

Yo creo que en la mayoría de los casos es mejor evitar el uso de
threads. Tal vez podrías usar un sistema de programación asíncrona
como Twisted o Gevent. Sí usas librerías gráficas como GTK o Qt ya
tienes un bucle en el cual programar asíncronamente.

Manuel.


Más información sobre la lista de distribución Python-es