ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-PyQt中的os.walk类似物

2019-11-22 03:05:54  阅读:361  来源: 互联网

标签:qtcore pyqt qfile python qt


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

主应用程序是PyQt4中的GUI应用程序,并且QStrings和路径对象(文件,目录)中的所有文本字段均使用QFile,QDir,QFileinfo进行操作.

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

我应该使用os.walk还是更快,更有用的工具?

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

解决方法:

Should I use os.walk or something much faster and more informative?

没有任何东西,如果可以的话,我建议在python中使用os.walk.它一样好.

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

如果您迫切希望使用Qt,则可以在下面我曾经用过的下面提供以下遍历功能.

main.cpp

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

或简单地针对大型目录使用以下for,通常,因为它可以更好地扩展并且更加方便:

#include <QDirIterator>
#include <QDebug>

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

main.pro

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

生成并运行

qmake && make && ./qdir-traverse

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

标签:qtcore,pyqt,qfile,python,qt
来源: https://codeday.me/bug/20191122/2056785.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有