考虑以下场景:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
walk = os.walk('/home')
for root, dirs, files in walk:
for pathname in dirs+files:
print os.path.join(root, pathname)
for root, dirs, files in walk:
for pathname in dirs+files:
print os.path.join(root, pathname)
我知道这个例子有点多余,但是您应该考虑到我们需要多次使用相同的walk
数据。我有一个基准测试场景,为了获得有用的结果,必须使用相同的walk
数据。
我尝试过在第二次迭代中克隆和使用walk2 = walk
,但它不起作用。问题是。我怎么复制它呢?这是可能的吗?
提前谢谢你。
发布于 2011-02-09 21:00:03
发布于 2011-02-09 21:11:04
如果您知道每次使用都要遍历整个生成器,那么通过将生成器展开为一个列表并多次使用该列表,您可能会获得最佳性能。
walk = list(os.walk('/home'))
发布于 2011-02-09 21:05:43
定义函数
def walk_home():
for r in os.walk('/home'):
yield r
或者甚至是这个
def walk_home():
return os.walk('/home')
两者的用法都是这样的:
for root, dirs, files in walk_home():
for pathname in dirs+files:
print os.path.join(root, pathname)
https://stackoverflow.com/questions/4945155
复制相似问题