• Johannes Gijsbers's avatar
    Patch #943206: · 836f5433
    Johannes Gijsbers yazdı
    `glob.glob()` currently calls itself recursively to build a list of matches of
    the dirname part of the pattern and then filters by the basename part. This is
    effectively BFS. ``glob.glob('*/*/*/*/*/foo')`` will build a huge list of all
    directories 5 levels deep even if only a handful of them contain a ``foo``
    entry. A generator-based recusion would never have to store these list at once
    by implementing DFS. This patch converts the `glob` function to an `iglob`
    recursive generator . `glob()` now just returns ``list(iglob(pattern))``.
    
    I also cleaned up the code a bit (reduced duplicate `has_magic()` checks and
    created a second `glob0` helper func so that the main loop need not be
    duplicated).
    
    Thanks to Cherniavsky Beni for the patch!
    836f5433
Adı
Son kayıt (commit)
Son güncelleme
Demo Loading commit data...
Doc Loading commit data...
Grammar Loading commit data...
Include Loading commit data...
Lib Loading commit data...
Mac Loading commit data...
Misc Loading commit data...
Modules Loading commit data...
Objects Loading commit data...
PC Loading commit data...
PCbuild Loading commit data...
Parser Loading commit data...
Python Loading commit data...
RISCOS Loading commit data...
Tools Loading commit data...
.cvsignore Loading commit data...
.hgtags Loading commit data...
LICENSE Loading commit data...
Makefile.pre.in Loading commit data...
README Loading commit data...
aclocal.m4 Loading commit data...
configure Loading commit data...
configure.in Loading commit data...
install-sh Loading commit data...
pyconfig.h.in Loading commit data...
setup.py Loading commit data...