python - 看门狗观察者不处理所有文件
问题描述
我有一段代码使用看门狗观察器调用大量函数来检测变化。问题是,只有 Sales.tsv 文件下面的代码片段会触发该过程,如果我运行 Service.tsv 文件,它只会锁定,然后它甚至不会处理 Sales.tsv 之后它也不返回“出现问题”消息。Sales.tsv 文件也会触发 print('Document Found, processing...'),而 Service.tsv 则不会。
我还尝试在 if、elif 和 else 之间进行更改,它们都不起作用。还尝试改变定位并将销售置于 service.tsv 段之上,但没有成功。
这两个文件都有正确的文件扩展名和正确的名称,唯一的区别是每个文件中包含的内容和文件的大小。销售文件只有8kb,服务1 是23kb。
folder_to_track = '/Users/myname/Desktop/New Reports'
folder_destination = '/Users/myname/Desktop/Old Reports'
class ChangeHandler(FileSystemEventHandler):
def on_modified(self, event):
for filename in os.listdir(folder_to_track):
file_exists = os.path.isfile(folder_destination + '/' + filename)
while file_exists:
file_exists = os.path.isfile(folder_destination + '/' + filename)
if os.path.splitext(filename)[-1] == '.tsv':
print('Document Found, processing...')
if filename == 'Service.tsv':
src = folder_to_track + '/' + filename
new_destination = folder_destination + '/' + filename
servicedf = pd.read_csv(src, sep='\t')
os.rename(src, new_destination)
service_report(servicedf)
if filename == 'Sales.tsv':
src = folder_to_track + '/' + filename
new_destination = folder_destination + '/' + filename
salesdf = pd.read_csv(src, sep='\t')
os.rename(src, new_destination)
sales_report(salesdf)
else:
print('Something Went Wrong')
return
def main():
while 1:
event_handler = ChangeHandler()
observer = Observer()
observer.schedule(event_handler, folder_to_track, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
if __name__ == '__main__':
main()
解决方案
推荐阅读
- terraform - 从现有基础架构生成配置
- ethereum - ENS 名称反向不适用于以太坊地址
- wordpress - 在“woocommerce_add_to_cart_redirect”过滤器上,获取添加/修改的购物车项目
- powershell - 为什么我的外变量变成废话?
- r - 如何将栅格数据框与 shapefile 相结合以创建物种丰富度地图?
- php - 我想在我的开源社交网络项目中嵌入自定义表情符号
- c# - Razor如何在提交表单后将对象从模型源传递到目标模型
- unity3d - 统一构建时的多个版本的 gradle 插件
- sql-server - 在两个表上使用 JOIN 的条件 UPDATE 语句
- javascript - 在打字稿中导入 JSON 时如何禁用/断言/覆盖推断的类型