首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >os.walk模拟PyQt

os.walk模拟PyQt
EN

Stack Overflow用户
提问于 2014-02-24 07:04:55
回答 1查看 567关注 0票数 3

在继续对某些任务执行递归dir/file搜索之前,我想知道Qt/PyQt是否类似于os.walk

主应用程序是PyQt4中的GUI应用程序,QString和路径对象(文件、目录)中的所有文本字段都使用QFileQDirQFileinfo进行操作。

作为类比,我指的是快速、方便的递归fs-树遍历工具。

我是否应该使用os.walk或其他更快、更有信息的工具?

PS。也许this可以帮助我,但我不确定这是否比os.walk更有效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-24 07:06:41

我是否应该使用os.walk或其他更快、更有信息的工具?

没有,如果可以的话,我建议在python中使用os.walk。就像它得到的一样好。

这不仅是因为Qt没有这样一种方便的方法,而且即使您基于QDir编写了自己的机制,您也可以访问所有这三个变量,而不必像使用os.walk那样手工处理。

如果您非常希望使用Qt,那么您可以在下面使用下面的遍历函数--我刚才使用过自己。

main.cpp

代码语言:javascript
复制
#include <QDir>
#include <QFileInfoList>
#include <QDebug>

void traverse( const QString& dirname )
{
    QDir dir(dirname);
    dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoSymLinks | QDir::NoDot | QDir::NoDotDot);

    foreach (QFileInfo fileInfo, dir.entryInfoList()) {
      if (fileInfo.isDir() && fileInfo.isReadable())
          traverse(fileInfo.absoluteFilePath());
      else
          qDebug() << fileInfo.absoluteFilePath();
    }
}

int main()
{
    traverse("/usr/lib");
    return 0;
}

或者简单地为大型目录提供以下信息,并且通常情况下,因为它扩展得更好、更方便:

代码语言:javascript
复制
#include <QDirIterator>
#include <QDebug>

int main()
{
    QDirIterator it("/etc", QDirIterator::Subdirectories);
    while (it.hasNext())
        qDebug() << it.next();
    return 0;
}

main.pro

代码语言:javascript
复制
TEMPLATE = app
TARGET = qdir-traverse
QT = core
SOURCES += main.cpp

构建和运行

代码语言:javascript
复制
qmake && make && ./qdir-traverse

然后,将所有经过遍历的文件打印出来。您可以开始定制它,然后进一步满足您的需要。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21981004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档