我想在另一个软件之后开始一些python代码。
这个软件做一些数据提取,并定期给我一些CVS文件形式的结果(每周)。我想要做的是触发我的Python代码在这些文件上执行,以便对它们执行一些函数,我希望在每次提取后都能完成。
我尝试了while(1),但似乎效率不高。
有没有什么Python代码或者执行Python的软件可以用来解决这个问题呢?提前谢谢。
发布于 2019-05-28 23:13:06
您可以监视文件夹,然后处理文件创建和/或修改事件。如果需要,您的脚本可以监视网络上的远程驱动器。
以下代码是从工作代码中截取出来的,但我不能确定它是否在这种代码片段状态下工作。它将为新创建的文件调用HandleNewlyCreated()。
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class WatchPendingHandler(FileSystemEventHandler):
''' Run a handler for every file added to the pending dir
This class also handles what I call a bug in the watchdog module
which means that you can get more than one call per real event
in the watched dir tree.
'''
def __init__(self):
super(WatchPendingHandler, self).__init__()
# wip is used to avoid bug in watchdog which means multiple calls
# for one real event.
# For reference: https://github.com/gorakhargosh/watchdog/issues/346
self.wip = []
def on_created(self, event):
path = event.src_path
if event.is_directory:
logging.debug('WatchPendingHandler() New dir created in pending dir: {}'.format(path))
return
if path in self.wip:
logging.debug('WatchPendingHandler() Dup created event for %s', path)
return
self.wip.append(path)
logging.debug('WatchPendingHandler() New file created in pending dir: {}'.format(path))
HandleNewlyCreated(path)
def on_moved(self, event):
logging.debug('WatchPendingHandler() %s has been moved', event.src_path)
with contextlib.suppress(ValueError):
self.wip.remove(event.src_path)
def on_deleted(self, event):
path = event.src_path
logging.debug('WatchPendingHandler() %s has been deleted', path)
with contextlib.suppress(ValueError):
self.wip.remove(path)
observer = Observer()
observer.schedule(WatchPendingHandler(), DIR_PENDING, recursive=True)
observer.start()
logging.info('Watching %s', DIR_PENDING)
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()on_created()的解释:它会检查事件是否是为了创建目录。如果是,它会记录该事件,然后返回/忽略该事件。然后,它检查文件创建事件是否以前发生过(self.wip中的路径)。如果是这样,它也会忽略该事件并返回。现在它可以在self.wip中记录事件,记录新事件,然后调用HandleNewlyCreated()来处理新创建的文件。
如果文件被移动或删除,那么我们需要从self.wip中删除路径,以便新文件的下一个创建事件不会被忽略。
更多信息请点击此处:https://pypi.org/project/watchdog/
https://stackoverflow.com/questions/56345090
复制相似问题