Python-如何使用fnmatch匹配目录
我正在尝试使用fnmatch来匹配Python中的目录。但它不是只返回与模式匹配的目录,而是返回所有目录或无目录 例如: F:\Downloads有子目录\波特兰秀\洛杉矶秀,等等 我试图只在\波特兰秀目录中查找文件,但它也会返回LAS秀等 代码如下: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
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