1

目前我的 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 中键入的模式

还是这不适用于我当前的代码

4

2 回答 2

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])

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

于 2011-09-24T19:20:39.587 回答
2

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

for filename in filenames:
    if fnmatch.fnmatch(filename, search):
        print os.path.join([dirname, filename])
于 2011-09-24T19:22:34.560 回答