La domanda: How do I watch a file for changes using Python? suggerisce di utilizzare il cane da guardia, ma ho scoperto che era solo in grado di vedere una directory, non un file. watchdog-test.py è script di esempio del cane da guardia:Come posso guardare un file, non una directory per le modifiche usando Python?
$ python watchdog-test.py ab_test_res.sh &
[1] 30628
[email protected]:~/laike9m$ Traceback (most recent call last):
File "watchdog-test.py", line 15, in <module>
observer.start()
File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/api.py", line 255, in start
emitter.start()
File "/usr/local/lib/python2.7/dist-packages/watchdog/utils/__init__.py", line 111, in start
self.on_thread_start()
File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify.py", line 121, in on_thread_start
self._inotify = InotifyBuffer(path, self.watch.is_recursive)
File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify_buffer.py", line 35, in __init__
self._inotify = Inotify(path, recursive)
File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify_c.py", line 187, in __init__
self._add_dir_watch(path, recursive, event_mask)
File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify_c.py", line 363, in _add_dir_watch
raise OSError('Path is not a directory')
OSError: Path is not a directory
Allora, qual è la soluzione migliore? Sto usando Linux (Ubuntu 12.04). BTW Non voglio usare il polling.
Quale sistema operativo? Non lo so per certo, ma penso che Windows supporti solo la visione delle directory. –
@ColonelThirtyTwo Linux. – laike9m
guarda in inotify http://linux.die.net/man/7/inotify –