我想看两个不同的目录接收2个不同名称的PDF文件,在接收任何PDF文件时,我想在事件处理程序中执行一些命令提示脚本。我可以为我的问题创建两个单独的文件,但我希望继续使用单个python代码监视这些文件。请您指导我如何以及在哪里,我们可以把If-Else条件或其他方法来处理这个问题在我下面的代码。你知道吗
有两个单独的代码文件,我可以存档。 我可以理解这段代码只适用于一个类,因为**while循环-时间。睡眠(5). 但无法思考其他方法
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import subprocess
class Watcher1:
DIRECTORY_TO_WATCH1 = "C:\\Users\\BPM_admin\\Desktop\\FinalOCR\\Diageo\\SampleInvoices"
def __init__(self):
self.observer = Observer()
def run1(self):
event_handler1 = Handler1()
self.observer.schedule(event_handler1, self.DIRECTORY_TO_WATCH1, recursive=True)
self.observer.start()
try:
while True:
time.sleep(5)
except:
self.observer.stop()
print("Error")
self.observer.join()
class Handler1(FileSystemEventHandler):
@staticmethod
def on_any_event(event):
if event.is_directory:
return None
elif event.event_type == 'created':
subprocess.call([
'C:\\Users\\BPM_admin\\AppData\\Local\\UiPath\\app-19.7.0\\UiRobot.exe',
'/file',
'C:\\Users\\BPM_admin\\Desktop\\FinalOCR\\InvoiceAutomation\\PDFReadwithNative.xaml'
])
class Watcher2:
DIRECTORY_TO_WATCH2 = "C:\\Users\\BPM_admin\\Desktop\\SecondOCR\\Diageo\\SampleInvoices"
def __init__(self):
self.observer = Observer()
def run2(self):
event_handler2 = Handler2()
self.observer.schedule(event_handler2, self.DIRECTORY_TO_WATCH2, recursive=True)
self.observer.start()
try:
while True:
time.sleep(5)
except:
self.observer.stop()
print("Error")
self.observer.join()
class Handler2(FileSystemEventHandler):
@staticmethod
def on_any_event(event):
if event.is_directory:
return None
elif event.event_type == 'created':
subprocess.call([
'C:\\Users\\BPM_admin\\AppData\\Local\\UiPath\\app-19.7.0\\UiRobot.exe',
'/file',
'C:\\Users\\BPM_admin\\Desktop\\SecondOCR\\InvoiceAutomation\\PDFReadwithNative.xaml'
像这样我被称为主要方法:
if __name__ == '__main__':
w1 = Watcher1()
w1.run1()
w2 = Watcher2()
w2.run2()
我会把
while True
从类移到__main__
对于
event_handler1
/event_handler2
和DIRECTORY_TO_WATCH1
/DIRECTORY_TO_WATCH2
不需要在分开的类中使用数字1
2
因为类非常相似,所以它可能是一个具有不同参数的类
处理程序也非常相似,所以您可以将它们简化为一个具有不同参数的处理程序
相关问题 更多 >
编程相关推荐