我的节目是
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
答案 0 :(得分:1)
os.walk
已经访问了它遇到的所有子目录(这就是为什么它被称为“walk”;它遍历整个目录结构)。所以你不需要为你看到的每个目录再次递归调用你的函数。
如果您使用os.listdir
来提供单个目录的内容,那么您的逻辑将是合适的。在这种情况下,您还必须以递归方式列出每个子目录的内容。