【发布时间】:2015-03-01 04:18:53
【问题描述】:
我在 Python 3 中定义了一个函数...
>>> import os
>>> def find(path):
... if not os.path.isdir(path):
... return []
... out_list = []
... for f in os.listdir(path):
... if os.path.isdir(f):
... for g in find(f):
... out_list.append(g)
... else:
... out_list.append(f)
... return out_list
...
这似乎会爬下path 的树并列出每个文件(无论如何对我来说),但是当我执行它时......
>>> find('..')
['CDB', 'dv', 'DataIntegrityUtility', 'cdb', 'libvrs']
所有结果都有包含文件的目录。不应该还有更多吗?
【问题讨论】:
-
为什么不将
find设为生成器,将yield设为您找到的文件?代码在内存方面会更简单,更有效。而当你必须有一个清单的时候,你可以打电话给list()。
标签: python file python-3.x recursion directory