我编写了一个多线程应用程序来监视和响应给定文件列表中的更改.我有一个Watch
获取文件大小的类,并size
在第一次调用时将其设置为变量.然后,几秒钟后,它再次获取文件的大小,并将其与之前的大小进行比较,如果更改,则设置size
为文件的当前大小.此外,还有一个WatchWorker
类是它的子类threading.Thread
.在WatchWorker
这使得使用Watch
类"手表"给定的文件.
现在这是真正的问题:我编写的代码正在工作,并在检测到更改时通知用户.但是当我尝试使用Ctrl+ 从应用程序退出时没有响应C.我在Windows上.
码:
import time import threading import os class Watch(object): def __init__(self, path, time=5): self.path = path self.time = time self.size = os.stat(path).st_size def loop(self): while True: time.sleep(self.time) size = os.stat(self.path).st_size if size != self.size: self.size = size print "Change detected in file {}".format(self.path) class Watch_Worker(threading.Thread): def __init__(self, path, *args, **kwargs): super(Watch_Worker, self).__init__(*args, **kwargs) self.path = path def run(self): super(Watch_Worker, self).run() Watch(self.path).loop() def main(*args): for i in args: thrd = Watch_Worker(path=i) thrd.start() print 'Watching ' + i print "From main thread" if __name__ == '__main__': main('blah.js', 'cs.c', 'ab.rb')
编辑
修改代码以比较生成的值os.stat('somefile.ext').st_size)
.