问题标签 [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 回答
7341 浏览

python - 如何将参数传递给我的 Python watchdog.events.PatternMatchingEventHandler

我对 Python 还是很陌生,希望这个问题的答案对你们大多数人来说是显而易见的。

我正在 Python 中创建一个代表 ScanFolder 的类。

在该类的 __init__ 中,我启动了 watchdog.observers

每当监视目录下的文件发生更改时,此观察者将触发 watchdog.events.PatternMatchingEventHandler。

我的问题如下:

我怎样才能让我的 scan_folder 对象被我的 scan_folder.event_handler() 修改?

实际上,我想在扫描文件夹中检测到文件的任何地方填充 scan_folder.documents 字典。

非常感谢您,并为我的无知感到抱歉。

0 投票
1 回答
380 浏览

python - 关闭 wxPython 窗口时 Python 看门狗没有终止

我有一个应用程序,其中包含一个 wxPython GUI,它在初始化时启动一个看门狗观察器和一个 python 进程。

我正在通过这个 wx.TaskBarIcon 回调方法关闭 wxPython 窗口:

其中 DestroyChildProcess 是:

请注意,BacklogManager 是一个多处理 Process 子类。我遇到的问题是,当我关闭 wxPython GUI 窗口时,我仍然在 Windows 任务管理器中看到两个 pythonw.exe 进程。有三种可能:

  1. 我没有正确终止 GUI 进程。(不确定是否是进程)
  2. 我没有正确终止看门狗观察者。
  3. 我没有正确终止 backlog_manager 进程。

从玩弄代码来看,调用“self.backlog_manager.terminate()”似乎确实工作正常,留下一个 pythonw.exe 实例运行。

有没有办法让我正确终止或停止所有 pythonw.exe 进程?我究竟做错了什么?

编辑 - 经过进一步调查,这似乎是我用来启动 python 脚本的 .bat 脚本的问题。我本质上是使用 pythonw.exe 和 START /B 来隐藏命令行窗口。

似乎当我使用以下内容启动脚本时:

当我关闭命令行窗口时,所有 Windows 任务管理器进程都会结束。我怀疑这可能是 pythonw.exe 或我结束进程的方式的问题。

0 投票
1 回答
1836 浏览

python - Flask(使用看门狗)和 uWSGI - 没有来自文件系统的事件

我正在使用看门狗在运行我的Flask 服务器时重新加载 python 模块。当我运行我的debug Flask server时,一切正常。但是当我从uWSGI启动 Flask 服务器时,没有通知从我的 Linux 文件系统进入看门狗,因此不会重新加载模块。 MasterService在第一个请求被接受时被初始化。


注意:我也尝试过使用女服务员。那里一切正常,但我更愿意使用 uWSGI。谢谢任何建议。


0 投票
1 回答
460 浏览

pyqt - 为什么我的 python QObject 的插槽不是由 emit() 触发的

我有 python 文件系统(看门狗)代码成功地从它自己的线程触发了 pyqtSignal#emit() 调用(由 pdb 跟踪证明)。

这个信号应该通过 connect(...) 连接到我自己的 QObject 上相应的 @pyqtSlot 函数,但实际上,当文件系统更改触发发射时,目标函数从未被调用。

示例代码可以在 https://github.com/cefn/xmlorgmode/blob/2b97ff9994132def035d325fc7f7095c9fe187f2/index.py查看

并且可以如下调用,从同一个文件夹传入一个 XML 文件和一个 XQuery 文件。

这是第一次完美加载,但文件系统触发时不会发生刷新,如果我的代码有效,这是我所期望的。失败是沉默的。

谁能建议我需要的额外事件循环结构,看门狗触发的发射对应于对 QueryDisplay#update(...) 的调用?

背景

我一直在尝试将动态构造的 HTML 传递给由文件夹中的文本文件支持的 QWebView,这些文本文件偶尔会发生变化。由于 QWebView#setHtml(...) 在其自己的线程中调用的要求,我不得不尝试找出信号和插槽,并且我遇到了障碍。我到达的线程安排不知何故坏了,但我不知道是怎么回事。

我无法确定我的 QObject 应该如何与适当线程中的事件循环相关联,以便可以处理发出的事情。调试运行代码后,QApplication、QWebView 和我的 QObject 在与 pdb 交互调用 #thread() 以建立亲和力时都共享同一个线程,就在进入 app.exec_() 循环之前。我认为这意味着所有这些对象的所有事件都将在 app.exec_() 中处理,但我一定以某种方式误解了模型。

0 投票
1 回答
6341 浏览

python - python看门狗运行不止一次

我正在尝试学习 python-watchdog,但我有点困惑为什么我设置的作业不止一次运行。所以,这是我的设置:

观察者的设置如下:

最后,像这样的动作:

..where./run.sh只是我想在.done找到带有扩展名的文件时运行的 shell 脚本/path/to/some/directory/bin

但是,当我发出 apython observer.py然后执行 a touch job.doneon 时/path/to/some/directory/bin,我看到我的 shell 脚本./run.sh运行了 3 次而不是 1 次。

我很困惑为什么这会运行三次而不是一次(我确实删除了job.done我的 bash 脚本中的文件)

0 投票
1 回答
1761 浏览

python - python中的多线程套接字编程

我正在使用 python 进行客户端/服务器套接字编程。我可以毫无问题地设置它,但是使用线程,我迷路了。我不知道如何完成那部分。我也查看了 python 文档,但找不到我所期望的。

我想要实现的是 - 服务器正在接受来自客户端的连接以及监视目录以进行任何文件创建。我试图同时运行它们,但它没有工作。

我发布的代码没有线程,因为使用线程它根本不起作用。

我正在使用看门狗来监视 /home/abcd/Maildir/new 来监视创建的任何新电子邮件文件,如果创建了它,我想向电子邮件发送确认(在本例中为标志)给客户端已收到。Socket 连接和 Watchdog 单独工作得很好,但我不知道他们为什么不能一起工作?:(

如何将这些方法放在不同的线程中,以便它们并行运行?谢谢你的帮助。

编辑:克雷格输入后的代码:

编辑 2:

当我从客户端向服务器发送电子邮件时,我第一次得到正确的结果,但是当我再连接一次时,输出很奇怪(“In message”打印两次,标志值也打印两次,我得到了破管错误)

克雷格输入后修改 Server.py:

这是输出:

这是我的 client.py - 我要做的就是检查从客户端到服务器的电子邮件延迟并从服务器获取响应。

请帮帮我。谢谢。

0 投票
1 回答
1290 浏览

windows - 用python3.4在windows上看门狗

我正在尝试学习在 Windows 上使用看门狗实用程序。

我已经浏览了谷歌上可用的基本示例。我正在尝试编写一个脚本,它将监视给定目录,然后如果创建了任何具有名为 version 的文件的子目录,则将发送邮件。

问题是,每当我运行脚本时,我都会收到此错误:

我在调用observer.schedule 时提供了正确的路径,我不明白为什么会这样。

请帮我找出我缺少的东西。

0 投票
0 回答
227 浏览

python-3.x - 从 Watchdog 事件处理程序类中调用 PyQt 类

我已经设置了监视程序来监视新文件的文件夹,并且我想在运行 on_created 函数后尝试返回主 PyQt 类。

我需要能够调用 someFunction

我曾尝试使用信号,但我总是收到此错误

0 投票
1 回答
5839 浏览

python - 如何使用 Python 查看文件而不是目录以进行更改?

问题:如何使用 Python 观察文件的更改?建议使用看门狗,但我发现它只能看目录,不能看文件。watchdog-test.py是看门狗的示例脚本:

那么最好的解决方案是什么?我正在使用 Linux(Ubuntu 12.04)。顺便说一句,我不想​​使用轮询。

0 投票
1 回答
205 浏览

python - 如何将看门狗添加到我的 python 可执行文件

我在 Windows 上使用 Python 3.4 并尝试了 py2exe 和 cx_freeze。当我尝试使用以下说明时:

http://www.py2exe.org/index.cgi/ExeWithEggs

我收到一条错误消息,指出路径未定义。在下面的 hack 部分中,我不知道如何执行第 3 步。我是否只是手动将所有单独的 .py 文件复制到源目录中?不确定 data_files 代表什么。

两个脚本都说我缺少许多与看门狗包相关的模块。