What would be the simplest way to have .gitignore style fnmatch() with Python. Looks like that stdlib does not provide a match() function which would match a path spec against an UNIX style path regex.
fnmatch() matches only pure filenames, no paths http://docs.python.org/library/fnmatch.html?highlight=fnmatch#fnmatch
glob() will perform directory listing, and does not provide match() true/false style function http://docs.python.org/py3k/library/glob.html?highlight=glob#glob.glob
.gitignore have both paths and files with wildcards to be (black)listed
If you want to use mixed UNIX wildcard patterns as listed in your .gitignore example, why not just take each pattern and use fnmatch.translate
with re.search
?
import fnmatch
import re
s = '/path/eggs/foo/bar'
pattern = "eggs/*"
re.search(fnmatch.translate(pattern), s)
# <_sre.SRE_Match object at 0x10049e988>
translate
turns the wildcard pattern into a re pattern
Hidden UNIX files:
s = '/path/to/hidden/.file'
isHiddenFile = re.search(fnmatch.translate('.*'), s)
if not isHiddenFile:
# do something with it