如何实现glob.glob
目前我用 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 个回答
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
则是一个纯粹的字符串操作:就是检查这个文件名是否符合这个模式。
2
你不需要用 glob.glob
来做这个,因为它是用来检查目录里的文件名,而这些文件名你已经拿到了。相反,你应该用 fnmatch.fnmatch
来把你的模式和你从 os.walk
得到的路径列表进行匹配(这通常是在你添加路径之前)。
for filename in filenames:
if fnmatch.fnmatch(filename, search):
print os.path.join([dirname, filename])