Folder Observer - 在创建时只运行一次新脚本

Folder Observer - On created only runs new script once

目前我有一个文件夹观察器,它基本上检查是否添加了新文件,然后应该 运行 另一个 Python 脚本用于其他一些执行。另一个 python 脚本基本上将 csv 转换为 Excel Table 格式。 问题是第一个 run/try 它会在文件进入文件夹后执行它应该做的所有事情,但是每当添加第二个文件时......它只是忽略 运行 另一个 Python 脚本。 我错过了什么?

观察者:

def on_created(event):
    print(f"Hey, {event.src_path} has been created!\n")
    print(f"The other Python file will now be run\n")
    time.sleep(5)
    import TableRun

def on_deleted(event):
    print(f"What the f**k! Someone deleted {event.src_path}!\n")

def on_modified(event):
    print(f"Hey hey hey, {event.src_path} has been modified \n")

def on_moved(event):
    print(f"Ok ok ok, someone moved {event.src_path} to {event.dest_path}")

if __name__ == "__main__":
    patterns = "*"
    ignore_patterns = ""
    ignore_directories = False
    case_sensitive = True
    my_event_handler = PatternMatchingEventHandler(patterns, ignore_patterns, ignore_directories, case_sensitive)
    my_event_handler.on_created = on_created
    my_event_handler.on_deleted = on_deleted
    my_event_handler.on_modified = on_modified
    my_event_handler.on_moved = on_moved
    path = str(current_path+"String of path")
    go_recursively = True
    my_observer = Observer()
    my_observer.schedule(my_event_handler, path, recursive=go_recursively)
    my_observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        my_observer.stop()
    my_observer.join()```

一个文件只能导入一次。第一次 运行 import TableRun 代码加载并执行,但每次你点击该语句时都是空操作。

正确的解决方案是将您的 import 语句移动到代码的顶部,重写 TableRun 使其不在 import 上执行代码,并替换您现有的 import 带有函数调用的语句。例如:

import TableRun


def on_created(event):
    print(f"Hey, {event.src_path} has been created!\n")
    print(f"The other Python file will now be run\n")
    time.sleep(5)
    TableRun.do_something_with_the_file()