PyQt中的os.walk模拟

时间:2014-02-24 07:04:55

标签: python qt pyqt qtcore qfile

在我继续实现递归目录/文件搜索并对某些任务进行一些过滤之前,我想知道Qt / PyQt是否具有os.walk的模拟。

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

作为模拟,我的意思是快速方便的递归fs-tree遍历工具。

我应该使用os.walk或更快更好的信息吗?

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

1 个答案:

答案 0 :(得分:3)

  

我应该使用os.walk或更快更好的信息吗?

没有,如果可以,我建议在python中使用os.walk。它和它一样好。

这不仅是因为Qt没有这样的便利方法,而且即使您基于QDir编写自己的机制,您也可以访问所有这三个变量,而无需像{{{{{{ 1}}。

如果你对使用Qt感到绝望,那么你可以在下面我自己使用以下遍历功能。

的main.cpp

os.walk

或简单地说以下forfor大目录,因为它扩展得更好,更方便:

#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;
}

main.pro

#include <QDirIterator>
#include <QDebug>

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

构建并运行

TEMPLATE = app
TARGET = qdir-traverse
QT = core
SOURCES += main.cpp

然后,您将获得所有打印的遍历文件。您可以开始自定义它,然后进一步满足您的需求。