26

Pythonジェネレーターに要素を追加することは可能ですか?

現在、整理されていないフォルダーのセットからすべての画像を取得し、それらを新しいディレクトリに書き込もうとしています。ファイルを取得するために、単一のディレクトリ内の画像ファイルのリストを返す os.walk() を使用しています。この単一のリストからジェネレーターを作成することはできますが、これらすべてのリストを単一のジェネレーターに結合する方法はわかりません。どんな助けでも大歓迎です。

関連している:

4

4 に答える 4

28

を探していitertools.chainます。次のように、複数の iterable を 1 つに結合します。

>>> 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 に答える