我编写了以下代码来搜索文件路径中的所有 csv 文件并打印第一个 csv 文件。但是,即使在看门狗执行该操作之后,我的代码仍会继续运行。一旦发现并打印设置文件,如何让看门狗停止。
本质上,如果找到并读取文件,我希望代码停止运行。
import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(message)s')
path = "C:/Users/Desktop/Test/"
extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
# convert 1st csv in list to pandas df then print
first_csv = pd.read_csv(all_filenames[0])
print(first_csv)
event_handler = LoggingEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
#for starting the observer thread
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
这对我有用
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
class EventHandler(PatternMatchingEventHandler):
def __init__(self):
PatternMatchingEventHandler.__init__(self, patterns=['*.csv'], ignore_directories=True, case_sensitive=True)
def on_created(self, event):
global Created
Created = True
print(f'{event.src_path} has been created!')
def FileWatcher(Path):
observer = Observer()
event_handler = EventHandler()
observer.schedule(event_handler, path=Path, recursive=False)
observer.start()
try:
while not Created:
pass
except KeyboardInterrupt:
observer.stop()
finally:
observer.stop()
observer.join()
if __name__ == '__main__':
Created = False
FileWatcher('./watched_directory')