Python看门狗窗口等到复制完成
发布时间:2020-05-23 02:10:27 所属栏目:Python 来源:互联网
导读:我在 Windows 2012服务器上使用 Python监视程序模块来监视共享驱动器上出现的新文件.当看门狗注意到新文件时,它将启动数据库恢复过程. 但是,监视程序似乎会尝试在创建的第二个文件中恢复文件,而不是等到文件完成复制到共享驱动器.所以我将事件更改为on_modifi
|
我在 Windows 2012服务器上使用 Python监视程序模块来监视共享驱动器上出现的新文件.当看门狗注意到新文件时,它将启动数据库恢复过程. 但是,监视程序似乎会尝试在创建的第二个文件中恢复文件,而不是等到文件完成复制到共享驱动器.所以我将事件更改为on_modified但是有两个on_modified事件,一个是文件最初被复制时的事件,另一个是完成复制后的事件. 如何将两个on_modified事件处理为仅在复制到共享驱动器的文件完成时触发? 将多个文件同时复制到共享驱动器时会发生什么? 这是我的代码 import time
import subprocess
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class NewFile(FileSystemEventHandler):
def process(self,event):
if event.is_directory:
return
if event.event_type == 'modified':
if getext(event.src_path) == 'gz':
load_pgdump(event.src_path)
def on_modified(self,event):
self.process(event)
def getext(filename):
"Get the file extension"
file_ext = filename.split(".",1)[1]
return file_ext
def load_pgdump(src_path):
restore = 'pg_restore command ' + src_path
subprocess.call(restore,shell=True)
def main():
event_handler = NewFile()
observer = Observer()
observer.schedule(event_handler,path='Y:',recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
if __name__ == '__main__':
main()
解决方法在on_modified事件中,只需等待文件完成复制,即可通过观察文件大小.提供更简单的循环: historicalSize = -1 while (historicalSize != os.path.getsize(filename)): historicalSize = os.path.getsize(filename) time.sleep(1) print "file copy has now finished" (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
