我正在尝试使用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”,而是获取目录中的所有内容。我做错了什么?
答案 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
在这种情况下,您会看到Foo
,Bar
,Benny
和Bernard
,但您不会看到Batman
。