2013-08-17 118 views
1

我想使用fnmatch来匹配Python中的目录。但不是只返回与模式匹配的目录,而是返回所有目录或不返回。Python - 如何使用fnmatch匹配目录

例如: F:\下载有子目录\波特兰展,\洛杉矶表演等等

我试图找到只有\波特兰显示目录中的文件,但它也返回LAS秀等

下面的代码:

for root, subs, files in os.walk("."): 
    for filename in fnmatch.filter(subs, "The Portland*"): 
    print root, subs, files 

而不是刚开子目录“波特兰秀”,我得到的一切目录。我究竟做错了什么?

回答

2

我只想用glob

import glob 
print "glob", glob.glob('./The Portland*/*') 

有一些技巧可以但如果你真的想用os.walk由于某种原因或其他...例如,让我们假设播放的顶级目录只包含更多的目录。然后你就可以确保你只能通过就地修改subs列表递归到正确的:

for root,subs,files in os.walk('.'): 
    subs[:] = fnmatch.filter(subs,'The Portland*') 
    for filename in files: 
     print filename 

现在,在这种情况下,你只会递归到与The Portland开始,那么你将打印所有的目录在那里的文件名。

. 
+ The Portland Show 
| Foo 
| Bar 
+ The Portland Actors 
|  Benny 
|  Bernard 
+ Other Actors 
|  George 
+ The LA Show 
| Batman 

在这种情况下,你会看到FooBarBennyBernard,但你不会看到Batman

+0

谢谢,glob工作。非常感激! – Tensigh