glob
uses fnmatch
under the hood. You could use it directly:
import fnmatch, os
names = os.listdir("/Users/smcho/Desktop/bracket/[10,20]")
print fnmatch.filter(names, '*.txt')
Or using (non-public) glob.glob1()
(it is present at least in Python 2.3+ including Python 3):
import glob
print glob.glob1("/Users/smcho/Desktop/bracket/[10,20]", '*.txt')
Here's the implementation of glob.glob1
:
def glob1(dirname, pattern):
if not dirname:
dirname = os.curdir
if isinstance(pattern, unicode) and not isinstance(dirname, unicode):
dirname = unicode(dirname, sys.getfilesystemencoding() or
sys.getdefaultencoding())
try:
names = os.listdir(dirname)
except os.error:
return []
if pattern[0] != '.':
names = filter(lambda x: x[0] != '.', names)
return fnmatch.filter(names, pattern)