PySide6.QtCore.QDirIterator¶
- 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])¶
- Parameters:
dir –
QDir
flags –
IteratorFlag
的组合
构造一个
QDirIterator
,可以遍历dir
的条目列表,使用dir
的名称过滤器和常规过滤器。您可以通过flags
传递选项来决定如何遍历目录。默认情况下,
flags
是NoIteratorFlags
,它提供了与entryList()
相同的行为。dir
中的排序被忽略。- __init__(path[, flags=QDirIterator.IteratorFlag.NoIteratorFlags])
- Parameters:
path – 字符串
flags –
IteratorFlag
的组合
构造一个可以遍历
path
的QDirIterator
。你可以通过flags
传递选项来决定如何遍历目录。默认情况下,
flags
是NoIteratorFlags
,它提供了与entryList()
中相同的行为。- __init__(path, filter[, flags=QDirIterator.IteratorFlag.NoIteratorFlags])
- Parameters:
path – 字符串
filter –
Filter
的组合flags –
IteratorFlag
的组合
构建一个
QDirIterator
,它可以遍历path
,没有名称过滤,并使用filters
进行条目过滤。您可以通过flags
传递选项来决定如何遍历目录。默认情况下,
filters
是NoFilter
,而flags
是NoIteratorFlags
,这提供了与entryList()
相同的行为。- __init__(path, nameFilters[, filters=QDir.NoFilter[, flags=QDirIterator.IteratorFlag.NoIteratorFlags]])
- Parameters:
path – 字符串
nameFilters – 字符串列表
filters –
Filter
的组合flags –
IteratorFlag
的组合
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
构造一个
QDirIterator
,可以使用nameFilters
和filters
来遍历path
。你可以通过flags
传递选项来决定如何遍历目录。默认情况下,
flags
是NoIteratorFlags
,它提供了与entryList()
相同的行为。例如,以下迭代器可用于迭代音频文件:
def audioFileIt(audioPath,{"*.mp3","*.wav"},QDir.Files):
返回当前目录条目的
QFileInfo
。另请参阅
- fileName()¶
- Return type:
字符串
返回当前目录条目的文件名,不包含前置路径。
当遍历单个目录时,此函数非常方便。使用
Subdirectories
标志时,可以使用filePath()
来获取完整路径。另请参阅
- filePath()¶
- Return type:
字符串
返回当前目录条目的完整文件路径。
另请参阅
- hasNext()¶
- Return type:
布尔
如果目录中至少还有一个条目,则返回
true
;否则,返回 false。- next()¶
- Return type:
字符串
将迭代器推进到下一个条目,并返回这个新条目的文件路径。如果
hasNext()
返回false
,此函数不执行任何操作,并返回一个空的QString
。你可以调用
fileName()
或filePath()
来获取当前条目的文件名或路径,或者调用fileInfo()
来获取当前条目的QFileInfo
。如果你对
QFileInfo
感兴趣,请调用nextFileInfo()
而不是next()。将迭代器推进到下一个条目,并返回这个新条目的文件信息。如果
hasNext()
返回false
,此函数不执行任何操作,并返回一个空的QFileInfo
。你可以调用
fileName()
或filePath()
来获取当前条目的文件名或路径,或者调用fileInfo()
来获取当前条目的QFileInfo
。当你只需要
filePath()
时,调用next()
而不是nextFileInfo()。- path()¶
- Return type:
字符串
返回迭代器的基本目录。