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 –
QDirflags –
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:
字符串
返回迭代器的基本目录。