This is a read-only mirror of pymolwiki.org
Difference between revisions of "Monitor file continuously"
Jump to navigation
Jump to search
(Created page with "This script can be used to continuously check the modification timestamp on a file (any format, although this example assumes it's a PDB file), and re-loads it whenever the times...") |
m (2 revisions) |
||
(One intermediate revision by one other user not shown) | |||
Line 37: | Line 37: | ||
monitor = pymol_file_monitor("status.pdb") | monitor = pymol_file_monitor("status.pdb") | ||
</source> | </source> | ||
+ | |||
+ | [[Category:Script_Library|Monitor file continuously]] | ||
+ | [[Category:System_Scripts]] |
Latest revision as of 01:53, 28 March 2014
This script can be used to continuously check the modification timestamp on a file (any format, although this example assumes it's a PDB file), and re-loads it whenever the timestamp changes. As written it is intended to be started from the command line, but this is not a requirement.
The Code
from pymol import cmd
import threading
import time
import os
import sys
class pymol_file_monitor (object) :
def __init__ (self,
file_name,
time_wait=1) : # time in seconds between mtime check
self.file_name = file_name
self.time_wait = time_wait
self.watch = True # this can be toggled elsewhere to stop updating
self.mtime = 0
t = threading.Thread(target=self.check_file)
t.setDaemon(1)
t.start()
print "Watching file %s" % file_name
def check_file (self) :
while (self.watch) :
if (os.path.exists(self.file_name)) :
print "checking..."
mtime = os.path.getmtime(self.file_name)
if (mtime > self.mtime) :
self.mtime = mtime
print "Re-loading %s" % self.file_name
cmd.load(self.file_name, state=1)
time.sleep(self.time_wait)
if (__name__ == "pymol") :
monitor = pymol_file_monitor("status.pdb")