26

是否可以将元素附加到 python 生成器?

我目前正在尝试从一组杂乱无章的文件夹中获取所有图像并将它们写入一个新目录。为了获取文件,我使用 os.walk() 返回单个目录中的图像文件列表。虽然我可以从这个单一列表中创建一个生成器,但我不知道如何将所有这些列表组合成一个单一的生成器。任何帮助将非常感激。

有关的:

4

4 回答 4

28

您正在寻找itertools.chain. 它将多个可迭代对象组合成一个,如下所示:

>>> import itertools 
>>> for i in itertools.chain([1,2,3], [4,5,6]):
...     print(i)
... 
1
2
3
4
5
6
于 2009-02-21T01:31:45.490 回答
19

应该这样做,directories您的目录列表在哪里:

import os
import itertools

generators = [os.walk(d) for d in directories]
for root, dirs, files in itertools.chain(*generators):
    print root, dirs, files
于 2009-02-21T01:54:52.767 回答
4
def files_gen(topdir='.'):
    for root, dirs, files in os.walk(topdir):
        # ... do some stuff with files
        for f in files:
            yield os.path.join(root, f)
        # ... do other stuff

for f in files_gen():
    print f
于 2009-02-21T01:25:53.103 回答
-1

像这样。

def threeGens( i, j, k ):
    for x in range(i):
       yield x
    for x in range(j):
       yield x
    for x in range(k):
       yield x

效果很好。

于 2009-02-21T01:28:36.467 回答