2009-02-28 16 views
49

Sto cercando un pacchetto python per il monitoraggio di file multipiattaforma? So che è possibile monitorare i file su Windows usando pywin32, e ci sono pacchetti che funzionano su Linux/Unix ma qualcuno sa di uno multipiattaforma?Monitorare i contenuti di file/directory?

+1

Tim Golden ha un metodo molto semplice cross-platform di polling di una directory con os.listdir qui: http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html – bernie

+2

Che cosa significa "monitor"? Si prega di fornire qualche suggerimento su ciò che si sta tentando di fare. –

risposta

29

Per i sistemi basati su Unix/Linux, è necessario utilizzare File Alteration Monitor Python bindings per libfam.

Per i sistemi basati su Windows, è necessario collegarsi all'API Win32 FindFirstChangeNotification e alle relative funzioni.

Per quanto riguarda un modo multipiattaforma, non conosco un buon modo cross-platform. Penso che sarebbe meglio creare da soli un modulo che funzioni su entrambi i sistemi operativi che utilizzano uno dei due metodi sopra descritti dopo aver rilevato quale sistema operativo sia.

+1

Puoi spiegare come usare l'API W32 in un esempio ... perché non capisco ... – wishi

2

Ho trovato questo collegamento, che parla del tuo problema. Anche se in realtà non fornisce la soluzione/libreria, penso che sarà di aiuto. http://www.stepthreeprofit.com/2008/06/cross-platform-monitoring-of-filesystem.html

Non penso che esista ancora uno multipiattaforma, quindi potresti voler eseguire il rollover.

Sono inesperto in questa zona, quindi non sono proprio sicuro. Spero che aiuti.

Nota
mi correggo, gamin è accessibile Cygwin come Adam Bernier mi ha fatto notare in un commento. Potresti voler cercare altre opzioni su cygwin (se esistono).

+0

Sembra essere un buon feedback per Gamin su Linux. FWIW, Gamin è elencato in pacchetti cygwin: http://cygwin.com/packages/ – bernie

+0

Ah! Cygwin! Non ci ho pensato. Sono corretto. – batbrat

0

Il modo più semplice per Linux è usare inotifywait (dato che il tuo kernel è abbastanza recente). Non è necessario alcun binding speciale, inotifywait può essere personalizzato per stampare le linee di output sullo standard output nel modo desiderato. Guarda e this question per un buon esempio.

+0

Ha menzionato specificamente la piattaforma multipiattaforma.inotifywait è solo per linux –

81

Sto lavorando a una libreria con licenza MIT che aiuta i programmi Python a monitorare gli eventi del file system nel modo più flessibile possibile. Ci sono delle differenze che sto cercando di appianare. Altamente versione alpha al momento:

verificarlo qui: http://github.com/gorakhargosh/watchdog/

Patch e contributi sono i benvenuti.

Spero che aiuti. =) Saluti.

+0

Grazie mille, stavo cercando una soluzione multipiattaforma e il watchdog è davvero utile! – mtrovo

+0

Quando sarà disponibile per python3? – avendael

+3

@avendael - Ora, a quanto pare. Supporta py3k a questo punto. –

4

Verificate anche questa opzione:

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

è stato utilizzato con un'applicazione cross-platform su Windows e OS X.

+3

Forse perché l'autore di watchdog postato su di esso in una risposta un anno prima e non c'è molto in questa risposta? Probabilmente non vale un downvote, ma non vale neanche la pena di un upvote. – fencepost

+1

Mi piace perché ha detto che lo ha usato ed è OK. – droope

+0

Non capisco mai perché una risposta è stata downvoted. Ecco l'uso del watchdog: http://pythonhosted.org/watchdog/quickstart.html – swdev

Problemi correlati