向python生成器添加元素

Fra*_*sco 17 python append generator

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

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

有关:

dF.*_*dF. 20

你在找itertools.chain.它将多个迭代组合成一个,如下所示:

>>> for i in itertools.chain([1,2,3], [4,5,6]):
...  print i
... 
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)


Rya*_*ght 14

这应该这样做,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
Run Code Online (Sandbox Code Playgroud)

  • `chain.from_iterable(imap(os.walk,directories))` (5认同)

jfs*_*jfs 5

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
Run Code Online (Sandbox Code Playgroud)