- 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
会检查添加到它的每个路径。可以通过files()
函数访问添加到QFileSystemWatcher
的文件,并通过directories()
函数访问目录。当文件被修改、重命名或从磁盘删除时,会发出
fileChanged()
信号。类似地,当目录或其内容被修改或删除时,会发出directoryChanged()
信号。请注意,当文件被重命名或从磁盘删除时,以及当目录被从磁盘删除时,QFileSystemWatcher
会停止监视文件和目录。注意:
在没有inotify支持的Linux内核上运行的系统上,包含监视路径的文件系统不能被卸载。
监控文件和目录的修改会消耗系统资源。这意味着您的进程可以同时监控的文件和目录数量是有限的。例如,在所有的BSD变体中,每个被监控的文件都需要一个打开的文件描述符。一些系统默认将打开的文件描述符数量限制为256。这意味着,如果您尝试将超过256个文件或目录添加到文件系统监控器中,
addPath()
和addPaths()
会失败。注意,您的进程可能除了正在监控的文件以外的其他文件描述符也被打开,这些打开描述符也会计入总数。macOS使用不同的后端,不受此问题影响。
使用给定的
parent
构造一个新的文件系统监视器对象。- __init__(paths[, parent=None])
- 参数:
paths – 字符串列表
parent –
QObject
使用给定的
parent
构造一个新的文件系统监视器对象,它监控指定的paths
列表。- addPath(file)#
- 参数:
file – 字符串
- 返回类型::
bool
如果存在,将
path
添加到文件系统监视器中。如果不存在,或者它已经被文件系统监视器监控,则不会添加路径。如果
path
指定了一个目录,当path
被修改或从磁盘中删除时,将发出directoryChanged()
信号;否则,当path
被修改、重命名或删除时,将发出fileChanged()
信号。如果监视成功,则返回 true。
监视失败的常规原因通常是系统相关的,但可能包括资源不存在、访问失败或如果平台有此限制,是总的监视计数限制。
- addPaths(files)#
- 参数:
files – 字符串列表
- 返回类型::
字符串列表
将
paths
中的每个路径添加到文件系统监视器。如果路径不存在或已经被文件系统监视器监视,则不会添加路径。如果指定的路径是目录,则在路径修改或从磁盘删除时将发出
directoryChanged()
信号;否则,在路径修改、重命名或删除时发出fileChanged()
信号。返回值是无法监视的路径列表。
监视失败的常规原因通常是系统相关的,但可能包括资源不存在、访问失败或如果平台有此限制,是总的监视计数限制。
注意
文件和目录可以同时监视的数量可能受到系统依赖性限制。如果达到此限制,将不会监视额外的
paths
,并将它们添加到返回的QStringList
中。另请参阅
- directories()#
- 返回类型::
字符串列表
返回正在被监视的目录路径列表。
另请参阅
- directoryChanged(path)#
- 参数:
path – 字符串
当在指定路径处的目录被修改(例如,添加或删除文件)或从磁盘删除时,发出此信号。请注意,如果短时间内有多次更改,部分更改可能不会发出此信号。然而,更改序列中的最后一个更改将始终生成此信号。
另请参阅
- fileChanged(path)#
- 参数:
path – 字符串
当在指定路径处的文件被修改、重命名或从磁盘删除时,发出此信号。
注意
作为安全措施,许多应用程序通过写入新文件然后删除旧文件来保存打开的文件。在您的槽函数中,您可以通过检查
watcher.files().contains(path)
来验证false
。如果它返回false
,请检查文件是否仍然存在,然后调用addPath()
以继续监视它。另请参阅
- files()#
- 返回类型::
字符串列表
返回正在被监视的文件的路径列表。
另请参阅
- removePath(文件)#
- 参数:
file – 字符串
- 返回类型::
bool
从文件系统观察者中移除指定的
路径
。如果观察者成功移除,则返回 true。
观察者移除失败的原因通常是系统依赖的,例如路径已经被删除。
另请参阅
- removePaths(文件们)#
- 参数:
files – 字符串列表
- 返回类型::
字符串列表
从文件系统观察者中移除指定的
路径们
。返回值是未能成功取消观察的路径列表。
观察者移除失败的原因通常是系统依赖的,例如路径已经被删除。
另请参阅