【发布时间】:2014-04-09 15:52:57
【问题描述】:
我从another stackoverflow question 获得的一些代码开始为目录树中的所有文件生成完整路径:
import os
def recursive_file_gen(mydir):
for root, dirs, files in os.walk(mydir):
for file in files:
yield os.path.join(root, file)
我想添加记忆,在我看来,最简单的实现方法就是让 recursive_file_gen 返回一个列表:
def recursive_file_list(mydir):
result = []
for root, dirs, files in os.walk(mydir):
for file in files:
result.append(os.path.join(root, file))
return result
这段代码很好,真的。当然不难弄清楚发生了什么。但是使用连续的append 操作组合一个列表并不完全是 Pythonic。我的猜测是使用 Python 语法有更好的方法,可能是通过列表理解,学习它会很有启发性。
我当然可以写:
def recursive_file_list(mydir):
return list(recursive_file_gen(mydir))
并记住它。但我想知道是否有更清洁的东西。
【问题讨论】:
标签: python list generator list-comprehension os.walk