PySide6.QtCore.QFileSystemWatcher

class QFileSystemWatcher

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

PySide6.QtCore.QFileSystemWatcher 的继承图

概要

方法

信号

注意

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

详细描述

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

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

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

当文件被修改、重命名或从磁盘中删除时,会发出fileChanged()信号。同样地,当目录或其内容被修改或删除时,会发出directoryChanged()信号。请注意,一旦文件被重命名或从磁盘中删除,QFileSystemWatcher将停止监控这些文件;一旦目录从磁盘中删除,也将停止监控这些目录。

  • 注意事项:

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

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

另请参阅

QFile QDir

__init__([parent=None])
Parameters:

父对象QObject

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

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

  • parentQObject

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

addPath(file)
Parameters:

文件 – str

Return type:

布尔

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

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

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

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

注意

可能存在一个系统依赖的限制,限制可以同时监视的文件和目录的数量。如果达到此限制,path将不会被监视,并返回false。

另请参阅

addPaths() removePath()

addPaths(files)
Parameters:

files – 字符串列表

Return type:

字符串列表

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

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

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

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

注意

可能存在一个系统依赖的限制,限制可以同时监视的文件和目录的数量。如果达到此限制,多余的paths将不会被监视,并且它们将被添加到返回的QStringList中。

另请参阅

addPath() removePaths()

directories()
Return type:

字符串列表

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

另请参阅

files()

directoryChanged(path)
Parameters:

路径 – 字符串

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

另请参阅

fileChanged()

fileChanged(path)
Parameters:

路径 – 字符串

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

注意

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

另请参阅

directoryChanged()

files()
Return type:

字符串列表

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

另请参阅

directories()

removePath(file)
Parameters:

文件 – str

Return type:

布尔

从文件系统监视器中移除指定的 path

如果手表成功移除,则返回 true。

监视移除失败的原因通常取决于系统,但可能是由于路径已被删除,例如。

另请参阅

removePaths() addPath()

removePaths(files)
Parameters:

files – 字符串列表

Return type:

字符串列表

从文件系统监视器中移除指定的 paths

返回值是无法成功取消监视的路径列表。

监视移除失败的原因通常取决于系统,但可能是由于路径已被删除,例如。

另请参阅

removePath() addPaths()