PySide6.QtCore.QFileSystemWatcher¶
- class QFileSystemWatcher¶
QFileSystemWatcher
类提供了一个接口,用于监视文件和目录的修改。更多…概要¶
方法¶
def
__init__()
def
addPath()
def
addPaths()
def
directories()
def
files()
def
removePath()
def
removePaths()
信号¶
def
fileChanged()
注意
本文档可能包含从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使用不同的后端,因此不受此问题影响。
使用给定的
parent
构造一个新的文件系统监视器对象。- __init__(paths[, parent=None])
- Parameters:
paths – 字符串列表
parent –
QObject
使用给定的
parent
构造一个新的文件系统监视器对象,该对象监视指定的paths
列表。- addPath(file)¶
- Parameters:
文件 – str
- Return type:
布尔
如果
path
存在,则将其添加到文件系统监视器中。如果路径不存在,或者已经被文件系统监视器监视,则不会添加该路径。如果
path
指定了一个目录,当path
被修改或从磁盘中删除时,将发出directoryChanged()
信号;否则,当path
被修改、重命名或删除时,将发出fileChanged()
信号。如果监视成功,则返回 true。
监视失败的原因通常与系统相关,但可能包括资源不存在、访问失败或平台上的总监视计数限制(如果平台有的话)。
- addPaths(files)¶
- Parameters:
files – 字符串列表
- Return type:
字符串列表
将
paths
中的每个路径添加到文件系统监视器中。如果路径不存在,或者它们已经被文件系统监视器监视,则不会添加这些路径。如果路径指定了一个目录,当路径被修改或从磁盘上移除时,将发出
directoryChanged()
信号;否则,当路径被修改、重命名或移除时,将发出fileChanged()
信号。返回值是无法监视的路径列表。
监视失败的原因通常与系统相关,但可能包括资源不存在、访问失败或平台上的总监视计数限制(如果平台有的话)。
注意
可能存在一个系统依赖的限制,限制可以同时监视的文件和目录的数量。如果达到此限制,多余的
paths
将不会被监视,并且它们将被添加到返回的QStringList
中。另请参阅
- directories()¶
- Return type:
字符串列表
返回正在监视的目录路径列表。
另请参阅
- directoryChanged(path)¶
- Parameters:
路径 – 字符串
当指定
path
处的目录被修改(例如,添加或删除文件)或从磁盘中移除时,会发出此信号。请注意,如果在短时间内发生多次更改,某些更改可能不会发出此信号。然而,一系列更改中的最后一次更改将始终生成此信号。另请参阅
- fileChanged(path)¶
- Parameters:
路径 – 字符串
当指定
path
处的文件被修改、重命名或从磁盘中删除时,会发出此信号。注意
作为一种安全措施,许多应用程序通过写入新文件然后删除旧文件来保存打开的文件。在您的槽函数中,您可以检查
watcher.files().contains(path)
。如果它返回false
,请检查文件是否仍然存在,然后调用addPath()
以继续监视它。另请参阅
- files()¶
- Return type:
字符串列表
返回正在监视的文件路径列表。
另请参阅
- removePath(file)¶
- Parameters:
文件 – str
- Return type:
布尔
从文件系统监视器中移除指定的
path
。如果手表成功移除,则返回 true。
监视移除失败的原因通常取决于系统,但可能是由于路径已被删除,例如。
另请参阅
- removePaths(files)¶
- Parameters:
files – 字符串列表
- Return type:
字符串列表
从文件系统监视器中移除指定的
paths
。返回值是无法成功取消监视的路径列表。
监视移除失败的原因通常取决于系统,但可能是由于路径已被删除,例如。
另请参阅