class QFileSystemWatcher#

QFileSystemWatcher 类提供了一个用于监视文件和目录修改的接口。 更多

Inheritance diagram of PySide6.QtCore.QFileSystemWatcher

概述#

方法#

信号#

注意

本文档可能包含从C++自动转换到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来通知我们。

详细描述#

QFileSystemWatcher 通过监视指定路径列表来监视文件系统和目录的改变。

调用 addPath() 来监视特定的文件或目录。可以使用 addPaths() 函数添加多个路径。可以通过使用 removePath()removePaths() 函数来删除现有路径。

QFileSystemWatcher 会检查添加到它的每个路径。可以通过 files() 函数访问添加到 QFileSystemWatcher 的文件,并通过 directories() 函数访问目录。

当文件被修改、重命名或从磁盘删除时,会发出 fileChanged() 信号。类似地,当目录或其内容被修改或删除时,会发出 directoryChanged() 信号。请注意,当文件被重命名或从磁盘删除时,以及当目录被从磁盘删除时,QFileSystemWatcher 会停止监视文件和目录。

  • 注意:

    • 在没有inotify支持的Linux内核上运行的系统上,包含监视路径的文件系统不能被卸载。

    • 监控文件和目录的修改会消耗系统资源。这意味着您的进程可以同时监控的文件和目录数量是有限的。例如,在所有的BSD变体中,每个被监控的文件都需要一个打开的文件描述符。一些系统默认将打开的文件描述符数量限制为256。这意味着,如果您尝试将超过256个文件或目录添加到文件系统监控器中,addPath()addPaths() 会失败。注意,您的进程可能除了正在监控的文件以外的其他文件描述符也被打开,这些打开描述符也会计入总数。macOS使用不同的后端,不受此问题影响。

另请参阅

QFile QDir

__init__([parent=None])#
参数:

parentQObject

使用给定的 parent 构造一个新的文件系统监视器对象。

__init__(paths[, parent=None])
参数:
  • paths – 字符串列表

  • parentQObject

使用给定的 parent 构造一个新的文件系统监视器对象,它监控指定的 paths 列表。

addPath(file)#
参数:

file – 字符串

返回类型::

bool

如果存在,将 path 添加到文件系统监视器中。如果不存在,或者它已经被文件系统监视器监控,则不会添加路径。

如果 path 指定了一个目录,当 path 被修改或从磁盘中删除时,将发出 directoryChanged() 信号;否则,当 path 被修改、重命名或删除时,将发出 fileChanged() 信号。

如果监视成功,则返回 true。

监视失败的常规原因通常是系统相关的,但可能包括资源不存在、访问失败或如果平台有此限制,是总的监视计数限制。

注意

可能存在一个与系统相关的限制,限制可以同时监控的文件和目录数量。如果达到此限制,则不会监控 path,并返回 false。

另请参阅

addPaths() removePath()

addPaths(files)#
参数:

files – 字符串列表

返回类型::

字符串列表

paths 中的每个路径添加到文件系统监视器。如果路径不存在或已经被文件系统监视器监视,则不会添加路径。

如果指定的路径是目录,则在路径修改或从磁盘删除时将发出 directoryChanged() 信号;否则,在路径修改、重命名或删除时发出 fileChanged() 信号。

返回值是无法监视的路径列表。

监视失败的常规原因通常是系统相关的,但可能包括资源不存在、访问失败或如果平台有此限制,是总的监视计数限制。

注意

文件和目录可以同时监视的数量可能受到系统依赖性限制。如果达到此限制,将不会监视额外的 paths,并将它们添加到返回的 QStringList 中。

另请参阅

addPath() removePaths()

directories()#
返回类型::

字符串列表

返回正在被监视的目录路径列表。

另请参阅

files()

directoryChanged(path)#
参数:

path – 字符串

当在指定路径处的目录被修改(例如,添加或删除文件)或从磁盘删除时,发出此信号。请注意,如果短时间内有多次更改,部分更改可能不会发出此信号。然而,更改序列中的最后一个更改将始终生成此信号。

另请参阅

fileChanged()

fileChanged(path)#
参数:

path – 字符串

当在指定路径处的文件被修改、重命名或从磁盘删除时,发出此信号。

注意

作为安全措施,许多应用程序通过写入新文件然后删除旧文件来保存打开的文件。在您的槽函数中,您可以通过检查 watcher.files().contains(path) 来验证 false。如果它返回 false,请检查文件是否仍然存在,然后调用 addPath() 以继续监视它。

另请参阅

directoryChanged()

files()#
返回类型::

字符串列表

返回正在被监视的文件的路径列表。

另请参阅

directories()

removePath(文件)#
参数:

file – 字符串

返回类型::

bool

从文件系统观察者中移除指定的 路径

如果观察者成功移除,则返回 true。

观察者移除失败的原因通常是系统依赖的,例如路径已经被删除。

另请参阅

removePaths() addPath()

removePaths(文件们)#
参数:

files – 字符串列表

返回类型::

字符串列表

从文件系统观察者中移除指定的 路径们

返回值是未能成功取消观察的路径列表。

观察者移除失败的原因通常是系统依赖的,例如路径已经被删除。

另请参阅

removePath() addPaths()