summaryrefslogtreecommitdiff
path: root/Lib/fnmatch.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1991-01-01 18:11:14 +0000
committerGuido van Rossum <guido@python.org>1991-01-01 18:11:14 +0000
commitbcc7719730a6b69ea41e7c126d63637119b813f2 (patch)
treea4248605e2b35907c4c3010ac23e69432142e160 /Lib/fnmatch.py
parentfa61fa9e68f75080123e966e700c5ee59810d6de (diff)
downloadcpython-bcc7719730a6b69ea41e7c126d63637119b813f2.tar.gz
Initial revision
Diffstat (limited to 'Lib/fnmatch.py')
-rw-r--r--Lib/fnmatch.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/Lib/fnmatch.py b/Lib/fnmatch.py
new file mode 100644
index 0000000000..c7caef6f27
--- /dev/null
+++ b/Lib/fnmatch.py
@@ -0,0 +1,35 @@
+# module 'fnmatch' -- filename matching with shell patterns
+
+# XXX [] patterns are not supported (but recognized)
+
+def fnmatch(name, pat):
+ if '*' in pat or '?' in pat or '[' in pat:
+ return fnmatch1(name, pat)
+ return name = pat
+
+def fnmatch1(name, pat):
+ for i in range(len(pat)):
+ c = pat[i]
+ if c = '*':
+ restpat = pat[i+1:]
+ if '*' in restpat or '?' in restpat or '[' in restpat:
+ for i in range(i, len(name)):
+ if fnmatch1(name[i:], restpat):
+ return 1
+ return 0
+ else:
+ return name[len(name)-len(restpat):] = restpat
+ elif c = '?':
+ if len(name) <= i : return 0
+ elif c = '[':
+ return 0 # XXX
+ else:
+ if name[i:i+1] <> c:
+ return 0
+ return 1
+
+def fnmatchlist(names, pat):
+ res = []
+ for name in names:
+ if fnmatch(name, pat): res.append(name)
+ return res