为什么这个递归函数返回多个字典,也就是每次循环时都打印它们为什么不在现有字典中添加新的发现。
不,我不想使用os.walk,是的,我知道没有回复
def retFiles(dir):
data = {}
root = set()
os.chdir(dir)
cwd = os.getcwd()
for i in os.listdir(cwd):
if os.path.isfile(i):
data.setdefault(i, set())
root.add(os.path.relpath(dir).replace("\\", "/"))
data[i] = root
else:
retFiles(i)
print(data)
答案 0 :(得分:3)
当您设置retfiles()
时,每次调用data = {}
时都会创建一个新词典。因此,它无法附加到调用方范围内的data
字典。
答案 1 :(得分:2)
将您的词典作为参数传递以保持对同一词典的引用,或使用return
来使用前一次调用的词典。
无论哪种方式,你的递归函数,因为所有递归调用,都需要处理相同的数据,否则它是无用的。