【发布时间】:2011-09-27 01:21:25
【问题描述】:
以下示例“遍历”一个目录,打印所有文件的名称,并在所有目录上递归调用自身。
import os
def walk(dir):
for name in os.listdir(dir):
path = os.path.join(dir,name)
if os.path.isfile(path):
print path
else:
walk1(path)
os.path.join` takes a directory and a file name and joins them into a complete path.
我的练习:修改walk,使它不打印文件名,而是返回一个名称列表。
有人能解释一下这个函数每行做了什么吗?我有一个好主意,但是当它到达这条线时:else: walk(path),这让我大吃一惊,因为没有解释它在做什么。对于这个练习,我能想到的将其更改为列表的唯一方法是:
def walk1(dir):
res = []
for name in os.listdir(dir):
path = os.path.join(dir,name)
if os.path.isfile(path):
res.append(path)
else:
walk1(path)
return res
我的输出从很多输出行变成了仅有的几行。我做对了吗?
【问题讨论】: