三种方法
Topic sourcedef search_file_using_stack(path = '.', format = '.py'):
stack = []
stack.append(path)
file_list = []
while stack:
file_dir = stack.pop()
for file in os.listdir(file_dir):
childpath = os.path.join(file_dir, file)
if os.path.isdir(childpath):
stack.append(childpath)
else:
if os.path.splitext(childpath)[1] == format:
file_list.append(childpath)
return file_list
补充一个递归的扩展:使用栈将递归转换成迭代。也可以用队列(collections包里的deque)来辅助实现。结果是一样的,区别是目录的处理顺序。队列是广度优先搜索,/a/b/c /a/d这种目录结构的话,会先搜索/a/b和/a/d,按层来。用栈就是深度优先搜索,会先/a/b/c,搜索完成后再查/a/d。
- 1
采蘑菇的lucas_688
1,glob
2,os.walk
3,递归