Plus rapide à l'os.à pied ou glob?

Je suis de déconner avec le fichier des recherches en python sur un disque dur de grande capacité. J'ai été à la recherche à l'os.de marcher et de glob. J'ai l'habitude de l'utilisation de l'os.pied que je trouve ça beaucoup plus soignée et semble être plus rapide (pour la taille habituelle de répertoires).

Quelqu'un a eu une expérience avec eux deux, et pourrait dire lequel est le plus efficace? Comme je l'ai dit, glob semble être plus lent, mais vous pouvez utiliser des caractères génériques, etc, ont été, comme avec la promenade, vous avez pour filtrer les résultats. Voici un exemple de recherche de core dumps.

core = re.compile(r"core\.\d*")
for root, dirs, files in os.walk("/path/to/dir/")
    for file in files:
        if core.search(file):
            path = os.path.join(root,file)
            print "Deleting: " + path
            os.remove(path)

Ou

for file in iglob("/path/to/dir/core.*")
    print "Deleting: " + file
    os.remove(file)
  • Sonne comme l'optimisation prématurée pour moi. J'ai jeté un coup d'oeil à la source (hg.python.org/cpython/file/d01208ba482f/Lib/glob.py et hg.python.org/cpython/file/d01208ba482f/Lib/os.py) et de voir que les deux fonctions s'appuient sur os.listdir et os.isdir, donc mon instinct me dit que vous ne gagnez pas beaucoup d'une façon ou de l'autre. (Cependant, comme souligné dans les deux réponses ci-dessous, la os.walk parcourt plus de sous-répertoires et glob.iglob ne l'est pas, donc ça n'a pas de sens de comparer). Si vous vous retrouvez avec un problème de performance, profil un couple d'approches. Sinon, il suffit d'écrire un code clair.
InformationsquelleAutor jdborg | 2012-01-19