如何检测文件修改时间/天?

时间:2019-07-10 14:01:13

标签: python watchdog python-watchdog

我的看门狗python能够检测并在检测到文件创建后运行(通过创建原始文件的副本)。但是,它无法检测到文件保存或文件“上次修改”时间的更改并无法触发代码运行。我怎样才能最好地解决这个问题?我缺少哪一行代码?

如果我可以运行代码 -复制并粘贴(创建复制文件)原始文件 -修改和禁用工作簿文件的共享属性 仅在将代码移至新的网络位置后才开始发生此错误

class MyHandler(PatternMatchingEventHandler):
    def on_modified(self, event):
        print(f'event type: {event.event_type}  path : {event.src_path}')
        filename = event.src_path.split("\\")[-1]
        checkext = filename.split(".")[-1]
        if checkext == "xlsx":
            if filename[0] != "~" :
                if filename in fileset:
                    fileset.discard(filename)
                    print("Duplicate modified event detected")
                    return
                else:
                    fileset.add(filename)
                    print("\nFile modified: " + filename)
                    os.chdir(path)
                    txtfile = open("filenames.txt", "a+")
                    txtfile.write(event.src_path + "\n")
                    txtfile.close()
                    os.chdir(path+"\\SourceCode")
                    print("Generating CPK...")
                    subprocess.call(["python", "file.py"])

 if __name__ == "__main__":
    try:
        path = "\\\\commonFolder\\code"
        print("Watching directory...\n----------")
        fileset = set()
        event_handler = MyHandler()
        observer = Observer()
        observer.schedule(event_handler, path=path, recursive=True)
        observer.start()

        try:    
            while True:
                time.sleep(1)
                fileset = set() 

        except KeyboardInterrupt:
            observer.stop()

        observer.join()

以前,一旦检测到文件保存/更改/创建,看门狗将触发代码运行。 看门狗正在监视位于多个文件夹中的多个文件。

1 个答案:

答案 0 :(得分:0)

如果要获取修改日期/时间,可以使用此代码

import time
from datetime import datetime

modTime = os.path.getmtime("filename")
datetime.fromtimestamp(modTime).strftime('%Y-%m-%d H:%M:%S')

idk您到底想在代码中做什么