如何实现glob.glob

时间:2011-09-24 19:16:03

标签: python search pygtk glob os.walk

目前我的os.walk代码列表是指定目录下所有目录中的所有文件。

top = /home/bludiescript/tv-shows
        for dirpath, dirnames, filenames in os.walk(top):
               for filename in filenames:
                  print os.path.join([dirname, filename])

所以我怎么能添加

glob.glob(search)
search = self.search.get_text

搜索我在gtk.Entry

中输入的模式

或者这是否适用于我当前的代码

2 个答案:

答案 0 :(得分:4)

您不希望glob,您需要fnmatch

for dirpath, dirnames, filenames in os.walk(top):
    for filename in filenames:
        if fnmatch.fnmatch(filename, my_pattern):
            print os.path.join([dirname, filename])

glob执行os.walk已完成的部分工作:检查磁盘以查找文件。 fnmatch是纯字符串操作:此文件名是否与此模式匹配?

答案 1 :(得分:2)

你不希望glob.glob为此;它会检查您已检索的目录中的名称。相反,使用fnmatch.fnmatch将您的模式与您从os.walk获得的路径名列表相匹配(可能在您添加路径之前)。

for filename in filenames:
    if fnmatch.fnmatch(filename, search):
        print os.path.join([dirname, filename])