Os.walk Analogue In Pyqt
Before I can continue to implement recursive dir/file search with some filtering for some tasks I want to know if Qt/PyQt has analogue of os.walk. Main app is a GUI app in PyQt4 an
Solution 1:
Should I use os.walk or something much faster and more informative?
There is none, and I would recommend using os.walk
in python if you can. It is just as good as it gets.
It is not only because Qt does not have such a convenience method, but even if you write your own mechanism based on QDir
, you will have access to all the three variables without hand-crafting like with os.walk
.
If you are desperate about using Qt, then you could have the following traverse function below I used myself a while ago.
main.cpp
#include<QDir>#include<QFileInfoList>#include<QDebug>voidtraverse( 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());
elseqDebug() << fileInfo.absoluteFilePath();
}
}
intmain(){
traverse("/usr/lib");
return0;
}
or simply the following forfor large directories and in general since it scales better and more convenient:
#include<QDirIterator>#include<QDebug>intmain(){
QDirIterator it("/etc", QDirIterator::Subdirectories);
while (it.hasNext())
qDebug() << it.next();
return0;
}
main.pro
TEMPLATE = app
TARGET = qdir-traverse
QT = core
SOURCES += main.cpp
Build and Run
qmake && make && ./qdir-traverse
Then, you will get all the traversed files printed. You can start customizing it then further to your needs.
Post a Comment for "Os.walk Analogue In Pyqt"