Message 1 of 2

Not applicable
10-08-2017
06:50 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
i want to implement a file observing with RevitPythonShell. i got 2 solutions which run perfectly with IronPython but get stacked (Revit closed without any error show up ) when use with PythonRevitShell. Please someone help me to decrypt this fault?
1. Use System IO
from System.IO import FileSystemWatcher from System.Threading import Thread def onChanged(source, event): print 'Changed:', event.ChangeType, event.FullPath def onRenamed(source, event): print 'Renamed:', event.OldFullPath, event.FullPath watcher = FileSystemWatcher() watcher.Path = 'D:\\temp' watcher.Filter = 'test.log' watcher.Changed += onChanged watcher.Created += onChanged watcher.Deleted += onChanged watcher.Renamed += onRenamed watcher.EnableRaisingEvents = True Thread.Sleep(60 * 1000 * 60) # Revit closed when i add this line
2. Use watchdog python
class MyEventHandler(PatternMatchingEventHandler): def on_moved(self, event): super(MyEventHandler, self).on_moved(event) logging.info("File %s was just moved" % event.src_path) def on_created(self, event): super(MyEventHandler, self).on_created(event) logging.info("File %s was just created" % event.src_path) def on_deleted(self, event): super(MyEventHandler, self).on_deleted(event) logging.info("File %s was just deleted" % event.src_path) def on_modified(self, event): super(MyEventHandler, self).on_modified(event) logging.info("File %s was just modified" % event.src_path) def main(file_path=None): logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') watched_dir = os.path.split(file_path)[0] print 'watched_dir = {watched_dir}'.format(watched_dir=watched_dir) patterns = [file_path] print 'patterns = {patterns}'.format(patterns=', '.join(patterns)) event_handler = MyEventHandler(patterns=patterns) observer = Observer() observer.schedule(event_handler, watched_dir, recursive=True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join() if __name__ == "__main__": main(log_path)
Solved! Go to Solution.