为什么os.walk输出有两个子目录

时间:2014-08-09 05:47:02

标签: python

我的节目是

import os
from traceback import format_exc
import pdb
des="testdir"
def generate_cabfile(folder):
    for parent,dirs, files in os.walk(folder):
        print parent
        print dirs
        print files
        print "-----------------"
        for file in files:
            file_path = os.path.join(parent, file)
        for dir in dirs:
            chile_folder = os.path.join(parent, dir)
            generate_cabfile(chile_folder)
    print "this is over"
generate_cabfile(des)

我的目录树是

  

TESTDIR / 1.txt的
  TESTDIR / 2.txt
  testdir / mu / a.txt

输出很奇怪,有两个dir' mu' 输出:

testdir
['mu']
['1.txt', '2.txt']
-----------------
testdir/mu
[]
['a.txt']
-----------------
this is over
testdir/mu
[]
['a.txt']
-----------------
this is over

1 个答案:

答案 0 :(得分:1)

os.walk已经访问了它遇到的所有子目录(这就是为什么它被称为“walk”;它遍历整个目录结构)。所以你不需要为你看到的每个目录再次递归调用你的函数。

如果您使用os.listdir来提供单个目录的内容,那么您的逻辑将是合适的。在这种情况下,您还必须以递归方式列出每个子目录的内容。