Každý abecední znak c můžete nahradit [cC] pomocí
import glob
def insensitive_glob(pattern):
def either(c):
return '[%s%s]' % (c.lower(), c.upper()) if c.isalpha() else c
return glob.glob(''.join(map(either, pattern)))
Místo vzorů glob používejte regulární výrazy bez ohledu na velikost písmen. fnmatch.translate
generuje regulární výraz ze vzoru glob, takže
re.compile(fnmatch.translate(pattern), re.IGNORECASE)
vám poskytne verzi vzoru glob bez ohledu na velikost písmen jako kompilovaný RE.
Mějte na paměti, že pokud je souborový systém hostován linuxovým boxem na souborovém systému podobnému Unixu, uživatelé budou moci vytvářet soubory foo
, Foo
a FOO
ve stejném adresáři.