文件夹观察器-创建后仅运行一次新脚本

问题描述 投票:0回答:1

当前,我有一个文件夹观察器,它基本上检查是否添加了新文件,然后应该运行另一个Python脚本进行其他一些执行。另一个python脚本基本上将csv转换为Excel Table格式。问题在于,第一次运行/尝试会在文件进入文件夹后执行它应该执行的所有操作,但是每当添加第二个文件时...。它只是忽略运行其他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()```

python observers
1个回答
0
投票

文件只能导入一次。首次运行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()
© www.soinside.com 2019 - 2024. All rights reserved.