glob
使用fnmatch
在引擎盖下。你可以直接使用它:
import fnmatch, os
names = os.listdir("/Users/smcho/Desktop/bracket/[10,20]")
print fnmatch.filter(names, '*.txt')
或使用(非公开)glob.glob1()
(它是存在至少在Python 2.3+包括Python 3):
import glob
print glob.glob1("/Users/smcho/Desktop/bracket/[10,20]", '*.txt')
这里是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)
来源
2010-04-07 19:15:25
jfs
@Roger:谢谢,我修好了。 – interjay 2010-04-07 19:17:33
@〜unutbu:不,'[[10,20]]'会在'[102,'后面跟着']'查找其中的一个字符。我并没有将括号加倍,而是创建了一个字符类:'[[]'是只包含字符'['的字符类。 – interjay 2010-04-07 19:19:50
啊是的。你是对的。感谢您的解释。 – unutbu 2010-04-07 19:22:22