【问题标题】:QT QFileSystemWatcherQT QFileSystemWatcher
【发布时间】:2016-12-14 17:28:35
【问题描述】:

看似简单,但行不通。我已经安装了 usbautomount。

#Watch the media directory and connect to enable save csv pb
self.usb_watcher = QFileSystemWatcher()
self.usb_watcher.addPaths(["/media/usb0"])
self.usb_watcher.directoryChanged.connect(self.enable_save_csv_pb)
self.usb_watcher.fileChanged.connect(self.enable_save_csv_pb)

我认为这与 addpath 有关。如果我不放在方括号中,我会收到以下错误消息:

QFileSystemWatcher: failed to add paths: m, e, d, i, a, /, u, s, b, 0

但我见过没有方括号的例子。

【问题讨论】:

  • 如果将addPaths 更改为addPath 会发生什么?
  • 同样的事情。当我插入usb时什么都没有。但是没有 s 的 addPath 是正确的。尝试了一个斜杠,但没有奏效。权限对监控重要吗?
  • @dpetican。您应该在问题中准确说明您正在做什么来测试此代码。大概您正在对文件系统进行某种更改并期望接收信号。您是否尝试过使用其他磁盘上的路径的相同代码?

标签: python linux pyqt qt4


【解决方案1】:

我认为你应该使用addPath 而不是addPaths

【讨论】:

  • 我想我已经走上了众所周知的道路。如果我错了,请纠正我,但 QFileSystemWatcher 监视目录本身而不是我想要的目录的内容。由于挂载点(目录)已经存在,那么监控的路径当然不会改变。如何监视目录中添加或删除的文件?
  • @dpetican。你不能监控不存在的东西。您所能做的就是监视可以创建它的现有位置 - 即它的最终父目录。因此,添加或删除文件在很大程度上被视为对目录的更改:请参阅documentation for the directoryChanged signal
  • 是的,我已经阅读了文档,QFileSystemWatcher 应该做我想做的事。还是应该?让我们明确一下这是我想要发生的事情:1)QFileSystemWatcher 监视 /media/usb0 最初没有文件 2)usbautomount 检测到 USB 驱动器并将其安装在 /media/usb0;现在目录中有文件但是这里的摩擦“现在目录中的文件”与添加到目录中的文件相同吗?
  • @dpetican。显然不是,因为当您在其上挂载另一个文件系统时,目录根本不会改变in 目录永远不会有任何文件:它只是一个连接另一个文件系统的节点。但无论如何,正如我所怀疑的那样,您的问题非常具有误导性,因为您真正想做的是监控挂载/卸载事件,而不是文件系统更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多