2009-02-28 33 views
49

Estoy buscando un paquete de python de monitoreo de archivos multiplataforma? Sé que es posible monitorear archivos en Windows usando pywin32, y hay paquetes que funcionan en Linux/Unix, pero ¿alguien sabe sobre uno multiplataforma?¿Monitorea el contenido de archivos/directorios?

+1

Tim Golden tiene una muy simple método multi-plataforma de sondeo de un directorio con os.listdir aquí: http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html – bernie

+2

¿Qué significa "monitor"? Proporcione alguna pista sobre lo que está tratando de hacer. –

Respuesta

29

Para sistemas basados ​​en Unix/Linux, se debe utilizar File Alteration Monitor Python bindings-libfam.

Para los sistemas basados ​​en Windows, debe atar en la API Win32 FindFirstChangeNotification y las funciones relacionadas.

En cuanto a una plataforma cruzada, no conozco una buena plataforma cruzada. Creo que lo mejor sería construir un módulo usted mismo que funciona en cualquiera de los sistemas operativos que utiliza uno de los 2 métodos anteriores después de detectar qué sistema operativo es.

+1

¿Podría explicarme cómo usar la API W32 en un ejemplo ... porque no entiendo eso ... – wishi

2

Encontré este enlace, que habla sobre su problema. Aunque en realidad no proporciona una solución/biblioteca, creo que ayudará. http://www.stepthreeprofit.com/2008/06/cross-platform-monitoring-of-filesystem.html

No creo que haya una plataforma multiplataforma todavía, por lo que es posible que desee rodar la suya propia.

No tengo experiencia en esta área, así que no estoy muy seguro. Espero que esto ayude.

Nota
mi error, gamin está disponible en cygwin como Adán Bernier me señaló en un comentario. Es posible que desee investigar otras opciones en cygwin (si existen).

+0

Parece ser una buena respuesta para Gamin en Linux. FWIW, Gamin aparece en los paquetes de cygwin: http://cygwin.com/packages/ – bernie

+0

¡Ah! ¡Cygwin! No pensé en eso. Estoy corregido. – batbrat

0

La forma más fácil en Linux es utilizar inotifywait (dado que su núcleo es lo suficientemente reciente). No necesita ningún enlace especial, inotifywait se puede personalizar para imprimir líneas de salida en salida estándar de la manera que desee. Mire y this question para un buen ejemplo.

+0

Mencionó específicamente la plataforma cruzada.inotifywait es solo para linux –

81

Estoy trabajando en una biblioteca con licencia de MIT que ayuda a los programas de Python a supervisar los eventos del sistema de archivos de la manera más portátil posible. Hay diferencias que estoy tratando de resolver. Altamente versión alfa en la actualidad

Échale un vistazo aquí: http://github.com/gorakhargosh/watchdog/

parches y contribuciones son bienvenidas.

Espero que ayude. =) Saludos.

+0

¡Muchas gracias, estaba buscando una solución multiplataforma y el perro guardián es realmente útil! – mtrovo

+0

¿Cuándo estará disponible esto para python3? – avendael

+3

@avendael - Ahora, aparentemente. Es compatible con py3k en este punto. –

4

También puedes ver esta opción:

http://pypi.python.org/pypi/watchdog

¿Se usó con una aplicación multiplataforma en Windows y OS X.

+3

Posiblemente porque el autor de watchdog publicado al respecto en una respuesta un año antes y no hay mucho en esta respuesta? Probablemente no valga la pena un voto negativo, pero tampoco vale la pena un voto a favor. – fencepost

+1

Me gusta porque dijo que lo usó y está bien. – droope

+0

Nunca lo entiendo porque una respuesta fue downvoted. Aquí está el uso de watchdog: http://pythonhosted.org/watchdog/quickstart.html – swdev

Cuestiones relacionadas