以惯用的方式在Python中迭代os.walk中的各个文件
作者:互联网
我开始使用从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)
我想添加memoization,在我看来,最简单的实现方法就是让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
这段代码很好,真的.当然不难发现发生了什么.但是使用连续追加操作将列表组合在一起并不完全是Pythonic.我的猜测是使用Python语法有更好的方法,可能是通过列表理解,并且学习它会有所启发.
我当然可以写:
def recursive_file_list(mydir):
return list(recursive_file_gen(mydir))
并记住这一点.但我想知道是否有更清洁的东西.
解决方法:
怎么样?
result = [os.path.join(root, file) for root, dir, files in os.walk(mydir) for file in files]
标签:python,generator,list-comprehension,os-walk,list 来源: https://codeday.me/bug/20190528/1174688.html