问题标签 [python-watchdog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1331 浏览

python - 从 FTP 下载文件时出现 Python Watchdog 错误

我正在使用Watchdog监视一个目录,以查看某个目录,以查看某个时间间隔内通过ftplib下载的新.xml文件。当看门狗看到文件时,on_created()会触发一个函数来处理/解析 xml,但似乎文件下载尚未完成导致后续函数中出现丢失数据错误。

我在调用函数之前添加了一个time.sleep(1)来缓解错误,但添加延迟在现实世界中似乎是一种不可靠的方法。我想知道是否有一种类似于我可以使用的承诺函数与延迟的方法。或者也许我完全误诊了这个问题并且有一个简单的答案?接受任何建议。

仅供参考...文件大小可能从大约 100K 到 4-5mg 不等。

FTP功能

看门狗

发送邮件(带睡眠)

在解析无法从下载文件中读取任何数据的内容变量处引发异常。

0 投票
1 回答
1031 浏览

python - Python 看门狗在 os.system() 上永远循环

我尝试构建一个一次性脚本,在每次更改后自动编译我的乳胶文档。

相关代码:

一旦我添加了 os.system(...) 行, on_modified() 方法就会在触发后开始永远循环。为了确保仅在我省略了对 os.system() 的调用后才调用 on_modified() 并且它就在那里,只打印了一行描述事件。

那么出了什么问题呢?

0 投票
1 回答
569 浏览

python - 为什么这个看门狗脚本在我的主文件夹中不起作用?

我正在编写一个 python 脚本来观察某个文件夹中的变化:

问题是文件的创建和修改根本不会触发进程功能,但是如果我更改arg = "/tmp/somefolder",那么它完全可以工作。我现在很困惑。

文件夹权限:

0 投票
1 回答
428 浏览

python - python看门狗:文件中命令的定义

我使用 grunt 和Gruntfile.js监视文件和启动测试,像这样

我正在搜索 python 解决方案,例如watchdog

对于任务和命令的定义,看门狗有一些类似的文件Gruntfile.js

0 投票
1 回答
1194 浏览

python - 看门狗兼容性:“CancelIoEx”的解决方法

使用 python watchdog文件系统事件监视库,我注意到在 Windows Server 2003 下使用时,它进入“轮询模式”,因此停止使用异步操作系统通知,因此在大量文件更改下严重降低系统性能。

当用户想要停止监视监视的目录或文件时,我将问题追溯到使用系统调用以停止调用锁定watchdog/observers/winapi.py的文件CancelIoExReadDirectoryChangesW

(winapi.py)

call的问题CancelIoEx是它直到 Windows Server 2008 才可用:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa363792 (v=vs.85).aspx

一种可能的替代方法是进行更改close_directory_handle以使其在受监视的目录中创建一个模拟文件,从而解锁等待ReadDirectoryChangesW返回的线程。

但是,我注意到CancelIo系统调用实际上在 Windows Server 2003 中可用:

取消调用线程为指定文件发出的所有挂起的输入和输出 (I/O) 操作。该函数不会取消其他线程为文件句柄发出的 I/O 操作。要从另一个线程取消 I/O 操作,请使用 CancelIoEx 函数。

但是调用CancelIo不会影响等待线程。

您对如何解决此问题有任何想法吗?可以threading.enumerate()使用发出一个信号,CancelIo由这些处理程序调用的每个线程处理吗?

0 投票
1 回答
147919 浏览

python - 在 Python 中从同一类中的另一个调用一个方法

我对python很陌生。我试图在类中将值从一种方法传递给另一种方法。我搜索了这个问题,但我无法得到正确的解决方案。因为在我的代码中,“if”正在调用类的方法“on_any_event”,作为回报应该调用我的另一个方法“dropbox_fn”,该方法利用“on_any_event”中的值。如果“dropbox_fn”方法在课堂之外,它会起作用吗?

我会用代码来说明。

这里的主要问题是......我不能在没有事件参数的情况下调用“on_any_event”方法。因此,与其返回值,不如在“on_any_event”中调用“dropbox_fn”是一种更好的方法。有人可以帮忙吗?

0 投票
1 回答
1326 浏览

python-3.x - Python看门狗 - 未解决的导入错误

我是 python 新手,我正在尝试运行监视系统上特定文件夹以跟踪事件的监视程序代码。但是,我在以下几行中不断收到错误(“未解决的导入”):

我已经正确安装了看门狗。但是,我想知道我是否应该在系统路径中包含或对环境变量进行一些更改,或者在 Eclipse 的 pydev 项目中的 pythonpath 中包含一些外部库。

下面给出了使用这些导入的代码:

是否会因为“观察者”导入在上课之前而“如果”在程序结束时出现问题?有人请帮我解决这个问题。

0 投票
1 回答
167 浏览

python - 跳过 fsevents 队列中的步骤

我目前正在使用 fsevents 监视文件夹。每次添加文件时,都会在此文件上执行代码。每隔一秒就会有一个新文件添加到文件夹中。

这工作得很好。唯一的问题是,该库正在为添加到文件夹的每个文件构建一个队列。在 file_event_callback 中执行的代码可能需要一秒钟以上的时间。当发生这种情况时,应该跳过队列中的其他项目,以便只使用最新的项目。

如何从队列中跳过项目,以便仅在最后一个完成后使用的文件夹中添加最新的内容?

我首先尝试使用看门狗,但由于它必须在 Mac 上运行,我在让它按我想要的方式工作时遇到了一些麻烦。

0 投票
1 回答
1082 浏览

python-3.x - 传输所有文件时 Python 通知

我正在使用“看门狗”api 来不断检查文件系统中文件夹中的更改。无论该文件夹中的文件发生什么变化,我都会将它们传递给一个特定的函数,该函数会为我传递的每个文件启动线程。

但是看门狗或任何其他文件系统观察者api(据我所知)会逐个文件通知用户,即当文件通过时,它们会通知用户。但我希望它一次通知我一大堆文件,以便我可以将该列表传递给我的函数并使用多线程。目前,当我使用“看门狗”时,它一次通知我一个文件,我只能将该文件传递给我的函数。我想一次传递许多文件以便能够进行多线程处理。

我想到的一个解决方案是:当您在文件夹中复制一堆文件时,操作系统会显示一个进度条。如果在进度条完成时可以通知我,那么这将是我的问题的完美解决方案。但我不知道这是否可能。

我也知道看门狗是一个轮询 API,用于监视文件系统的理想 API 是像 pyinotify 这样的中断驱动 API。但我没有找到任何中断驱动且跨平台的 API。iWatch 很好,但只适用于 linux,我想要适用于所有操作系统的东西。因此,如果您对任何其他 API 有任何建议,请告诉我。

谢谢。

0 投票
1 回答
697 浏览

python-multithreading - 理解这个多线程恶魔 python 代码

所以我是python的初学者,正在研究文件系统事件处理程序。我遇到了看门狗 api,在那里我看到了一个我无法理解的多线程代码。

这是他们网站上发布的代码:

此代码运行无限循环并侦听某个文件夹并将看到的内容记录到控制台。我的疑问是在代码的底部。

所以你启动观察者。然后要求它进行无限循环,直到完成某个按键操作。我假设在“observer.start()”代码的某个地方,他们也设置了 daemon=True。在某些按键下,程序会跳出循环并停止观察者。在看门狗的 api 中,stop() 的定义说它停止了守护线程。

1) 然后它执行一个join()。但是这个加入有什么需要。我已经停止了守护线程。不是 join() 意味着等待所有线程停止然后才退出程序。我可以从代码中删除 join() 吗?删除它后,我的程序仍然可以正常工作。

2)我也不明白 while 循环内需要 sleep(1) 。如果我只是在那里放一个“通过”声明会发生什么。我假设while循环会消耗更多资源???以及我们将睡眠时间设置为 1 秒而不是 2-3 秒的原因,因为在最坏的情况下,用户可能需要等待 2-3 秒才能关闭程序。但我可能错了。