--- glob.py.old 2008-06-13 17:00:46.000000000 +0300 +++ glob.py 2008-06-13 17:21:27.000000000 +0300 @@ -4,7 +4,7 @@ import fnmatch import re -__all__ = ["glob", "iglob"] +__all__ = ("glob", "iglob") def glob(pathname): """Return a list of paths matching a pathname pattern. @@ -29,14 +29,8 @@ for name in glob1(os.curdir, basename): yield name return - if has_magic(dirname): - dirs = iglob(dirname) - else: - dirs = [dirname] - if has_magic(basename): - glob_in_dir = glob1 - else: - glob_in_dir = glob0 + dirs = has_magic(dirname) and iglob(dirname) or [dirname] + glob_in_dir = has_magic(basename) and glob1 or glob0 for dirname in dirs: for name in glob_in_dir(dirname, basename): yield os.path.join(dirname, name) @@ -46,18 +40,17 @@ # takes a literal basename (so it only has to check for its existence). def glob1(dirname, pattern): - if not dirname: - dirname = os.curdir + dirname = dirname or os.curdir try: names = os.listdir(dirname) except os.error: return [] - if pattern[0]!='.': - names=filter(lambda x: x[0]!='.',names) - return fnmatch.filter(names,pattern) + if not pattern.startswith('.'): + names = filter(lambda x: not x.startswith('.'), names) + return fnmatch.filter(names, pattern) def glob0(dirname, basename): - if basename == '': + if not basename: # `os.path.split()` returns an empty basename for paths ending with a # directory separator. 'q*x/' should match only directories. if os.path.isdir(dirname):