Python-如何使用fnmatch匹配目录

Python-如何使用fnmatch匹配目录,python,operating-system,Python,Operating System,我正在尝试使用fnmatch来匹配Python中的目录。但它不是只返回与模式匹配的目录,而是返回所有目录或无目录 例如: F:\Downloads有子目录\波特兰秀\洛杉矶秀,等等 我试图只在\波特兰秀目录中查找文件,但它也会返回LAS秀等 代码如下: for root, subs, files in os.walk("."): for filename in fnmatch.filter(subs, "The Portland*"): print root, subs, file

我正在尝试使用fnmatch来匹配Python中的目录。但它不是只返回与模式匹配的目录,而是返回所有目录或无目录

例如: F:\Downloads有子目录\波特兰秀\洛杉矶秀,等等

我试图只在\波特兰秀目录中查找文件,但它也会返回LAS秀等

代码如下:

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

我得到的不是“波特兰秀”的子目录,而是目录中的所有内容。我做错了什么?

我会用
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 Show
|   Foo
|   Bar
+   The Portland Actors
|     Benny
|     Bernard
+   Other Actors
|     George
+ The LA Show
|   Batman
在本例中,您将看到
Foo
Bar
Benny
Bernard
,但不会看到
Batman