0

我正在尝试遍历目录树并排除某些目录。现在,例如,根据os.walk 排除 .svn 文件夹,我应该能够修改“目录”列表,然后让我修剪树。我尝试了以下方法:

import sys
import os

if __name__ == "__main__":

    for root, dirs, files in os.walk("/usr/lib"):
        print root
        dirs = []

我本来希望不会进入任何子目录,但我会这样做:

/usr/lib
/usr/lib/akonadi
/usr/lib/akonadi/contact
/usr/lib/akonadi/contact/editorpageplugins
/usr/lib/os-prober
/usr/lib/gnome-settings-daemon-3.0
/usr/lib/gnome-settings-daemon-3.0/gtk-modules
/usr/lib/git-core
/usr/lib/git-core/mergetools
/usr/lib/gold-ld
/usr/lib/webkitgtk-3.0-0
/usr/lib/webkitgtk-3.0-0/libexec

我错过了什么?

4

3 回答 3

2
dirs = []

重新绑定本地名称dirs。您可以修改列表的内容,例如。像这样:

dirs[:] = []
于 2013-06-26T09:50:06.903 回答
1

尝试以下之一

dirs[:] = []

或者

del dirs[:]
于 2013-06-26T09:50:18.810 回答
0

root给出整个路径,而不仅仅是你开始的根。

文档使它更清楚它在做什么:

for dirpath, dirnames, filenames in os.walk('/usr/lib'):
    print dirpath

在此处查看文档

于 2013-06-26T09:46:46.997 回答