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()
目前我有一个文件夹观察器,它基本上检查是否添加了新文件,然后应该 运行 另一个 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()