]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Initial revision
authorGuido van Rossum <guido@python.org>
Tue, 1 Jan 1991 18:17:49 +0000 (18:17 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 1 Jan 1991 18:17:49 +0000 (18:17 +0000)
Lib/glob.py [new file with mode: 0644]

diff --git a/Lib/glob.py b/Lib/glob.py
new file mode 100644 (file)
index 0000000..8a70f0e
--- /dev/null
@@ -0,0 +1,44 @@
+# Module 'glob' -- filename globbing.
+
+import posix
+import path
+import fnmatch
+
+def glob(pathname):
+       if not has_magic(pathname): return [pathname]
+       dirname, basename = path.split(pathname)
+       if dirname[-1:] = '/' and dirname <> '/':
+               dirname = dirname[:-1]
+       if has_magic(dirname):
+               list = glob(dirname)
+       else:
+               list = [dirname]
+       if not has_magic(basename):
+               result = []
+               for dirname in list:
+                       if basename or path.isdir(dirname):
+                               name = path.cat(dirname, basename)
+                               if path.exists(name):
+                                       result.append(name)
+       else:
+               result = []
+               for dirname in list:
+                       sublist = glob1(dirname, basename)
+                       for name in sublist:
+                               result.append(path.cat(dirname, name))
+       return result
+
+def glob1(dirname, pattern):
+       if not dirname: dirname = '.'
+       try:
+               names = posix.listdir(dirname)
+       except posix.error:
+               return []
+       result = []
+       for name in names:
+               if name[0] <> '.' or pattern[0] = '.':
+                       if fnmatch.fnmatch(name, pattern): result.append(name)
+       return result
+
+def has_magic(s):
+       return '*' in s or '?' in s or '[' in s