- class QDirIterator#
QDirIterator
类提供了一个目录条目列表的迭代器。更多…概述#
方法#
def
__init__()
def
fileInfo()
def
fileName()
def
filePath()
def
hasNext()
def
next()
def
nextFileInfo()
def
path()
注意
本文档可能包含自动从 C++ 转换来的 Python 段落。我们始终欢迎对段落翻译的贡献。如果您发现翻译存在问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 创建工单的方式来告诉我们。
详细描述#
警告
本节包含自动从 C++ 转换来的 Python 段落,可能包含错误。
您可以使用
QDirIterator
来逐个导航目录条目。它类似于entryList()
和entryInfoList()
,但因为它一次只列出一条条目而不是一次性列出所有条目,因此它具有更好的可扩展性,更适合大目录。它还支持递归列出目录内容,并跟随符号链接。与entryList()
不同,QDirIterator
不支持排序。构造函数
QDirIterator
接受一个QDir
或目录参数。构造后,迭代器位于第一个目录条目前。以下是逐个顺序遍历所有条目的方法it = QDirIterator("/etc", QDirIterator.Subdirectories) while it.hasNext(): dir = it.next() print(dir) # /etc/. # /etc/.. # /etc/X11 # /etc/X11/fs # ...
以下是如何找到并读取由名称过滤的所有文件的方法(递归查找)
it = QDirIterator("/sys", QStringList() << "scaling_cur_freq", QDir.NoFilter, QDirIterator.Subdirectories) while it.hasNext(): f = QFile(it.next()) f.open(QIODevice.ReadOnly) print(f.fileName(), f.readAll().trimmed().toDouble() / 1000, "MHz")
next()
和nextFileInfo()
函数推进迭代器并返回下一个目录条目的路径或QFileInfo
。您还可以调用filePath()
或fileInfo()
来获取当前文件路径或QFileInfo
而不需要首先推进迭代器。函数fileName()
仅返回文件名,类似于函数entryList()
的工作方式。与Qt的容器迭代器不同,
QDirIterator
是单向的(即不能以相反的顺序迭代目录)并且不允许随机访问。参考以下内容
- class IteratorFlag#
(继承自
enum.Flag
) 该枚举描述了可以组合起来配置QDirIterator
操作行为的标志。常量
描述
QDirIterator.NoIteratorFlags
默认值,表示没有标志。迭代器将返回指定路径的条目。
QDirIterator.Subdirectories
列出所有子目录中的条目。
QDirIterator.FollowSymlinks
与 Subdirectories 组合时,此标志可用于迭代指定路径的所有子目录,并跟随所有符号链接。将自动检测并忽略符号链接循环(例如,“link” => “.” 或 “link” => “..”)。
- __init__(dir[, flags=QDirIterator.IteratorFlag.NoIteratorFlags])#
- 参数:
dir –
QDir
flags –
IteratorFlag
的组合
构建一个
QDirIterator
,可迭代dir
的条目列表,使用dir
的名称过滤器和正则过滤器。您可以通过flags
传递选项来决定如何迭代目录。默认情况下,
flags
是NoIteratorFlags
,这与entryList()
中的行为相同。dir
中的排序被忽略。- __init__(path, filter[, flags=QDirIterator.IteratorFlag.NoIteratorFlags])
- 参数:
path – 字符串
filter –
Filter
的组合flags –
IteratorFlag
的组合
构建一个可以遍历
path
的QDirIterator
,不进行名称过滤,并对条目进行过滤。您可以通过flags
传递选项以决定如何遍历目录。默认情况下,
filters
是NoFilter
,并且flags
是NoIteratorFlags
,这提供了与entryList()
相同的行为。- __init__(path[, flags=QDirIterator.IteratorFlag.NoIteratorFlags])
- 参数:
path – 字符串
flags –
IteratorFlag
的组合
构建一个可以遍历
path
的QDirIterator
。您可以通过flags
传递选项以决定如何遍历目录。默认情况下,
flags
是NoIteratorFlags
,这与entryList()
中的行为相同。- __init__(path, nameFilters[, filters=QDir.NoFilter[, flags=QDirIterator.IteratorFlag.NoIteratorFlags]])
- 参数:
path – 字符串
nameFilters – 字符串列表
filters –
Filter
的组合flags –
IteratorFlag
的组合
警告
本节包含自动从 C++ 转换来的 Python 段落,可能包含错误。
构建一个可以遍历
path
的QDirIterator
,使用nameFilters
和filters
。您可以通过flags
传递选项以决定如何遍历目录。默认情况下,
flags
是NoIteratorFlags
,这提供了与entryList()
相同的行为。例如,以下迭代器可以用来遍历音频文件
def audioFileIt(audioPath,{"*.mp3","*.wav"},QDir.Files):
返回当前目录条目的
QFileInfo
。参考以下内容
- fileName()#
- 返回类型:
字符串
返回当前目录条目的文件名,不包含路径前缀。
当迭代单个目录时,此函数很方便。当使用
Subdirectories
标志时,可以使用filePath()
来获取完整路径。参考以下内容
- filePath()#
- 返回类型:
字符串
返回当前目录条目的完整文件路径。
参考以下内容
- hasNext()#
- 返回类型:
布尔类型
如果目录中至少还有一个条目,则返回
true
;否则返回false。- next()#
- 返回类型:
字符串
将迭代器移动到下一个条目,并返回该新条目文件的路径。如果
hasNext()
返回false
,此函数不执行任何操作且返回一个空QString
。您可以通过调用
fileName()
或filePath()
来获取当前条目的文件名或路径,或者调用fileInfo()
来获取当前条目的QFileInfo
对象。如果您感兴趣的是
QFileInfo
,请使用nextFileInfo()
而不是 next()。将迭代器移动到下一个条目,并返回该新条目的文件信息。如果
hasNext()
返回false
,此函数不执行任何操作且返回一个空的QFileInfo
。您可以通过调用
fileName()
或filePath()
来获取当前条目的文件名或路径,或者调用fileInfo()
来获取当前条目的QFileInfo
对象。当您只需要
filePath()
时,请使用next()
而不是 nextFileInfo()。参考以下内容
- path()#
- 返回类型:
字符串
返回迭代器的基目录。