问题描述
我正在使用Python的看门狗模块来侦听某个目录上的已创建事件。我在哪里对新创建的.csv文件进行处理。当我在处理程序中不进行任何测试时,看门狗会为所有粘贴/创建的文件正确触发,但是当我在处理程序中添加代码/逻辑时,其触发次数少于预期(例如52/60文件)。 使用的操作系统:Windows 10,代码应在Windows服务器上运行。 Python版本:3.7.3
代码:
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import pandas as pd
import numpy as np
from error_handling import ErrorHandler
import os
from timeloop import Timeloop
from datetime import timedelta
import json
from fill_data import OnMyWatch2
class OnMyWatch:
# Set the directory on watch
watchDirectory = "."
def __init__(self):
self.observer1 = Observer()
def run(self):
self.observer1.schedule(Handler(),self.watchDirectory,recursive = True)
self.observer1.start()
try:
while True:
time.sleep(1)
except:
self.observer1.stop()
print("Observer Stopped")
self.observer1.join()
class Handler(FileSystemEventHandler):
@staticmethod
def on_any_event(event):
if event.is_directory:
return None
elif event.event_type == 'created':
try:
# Event is created,you can process it Now
print("Watchdog received created event - % s." % event.src_path)
pathlower = str(event.src_path).lower()
if ".csv" in pathlower:
print("File is csv file")
# Once any code is added here the problem happens
# Example:
# df = pd.read_csv(event.src_path,names= ALL_INI.columnlistbundle.split("|"),sep="|",encoding='latin-1',engine='python')
# arraySelectedColumnsBundle = ALL_INI.selectedcolumnsbundle.split(",")
# bundle_df = df[np.array(arraySelectedColumnsBundle)]
else:
print("File is not csv file")
except Exception as e:
ErrorHandler(0,'In Observer ','-7','Exception ' + str(e),'',1,'')
if __name__ == '__main__':
if os.path.isdir("."):
watch = OnMyWatch()
watch.run()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)