Python - 如何使用fnmatch匹配目录

时间:2013-08-17 04:32:00

标签: python operating-system

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

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

我正在尝试在\ The Portland Show目录中查找文件,但它也会返回LAS show等。

以下是代码:

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

我不是只获得子目录“The Portland Show”,而是获取目录中的所有内容。我做错了什么?

1 个答案:

答案 0 :(得分: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