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 line2. 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.