要素をpythonジェネレータに追加することはできますか?pythonジェネレータに要素を追加する
私は現在、一連の混乱したフォルダからすべての画像を取得し、新しいディレクトリに書き込もうとしています。ファイルを取得するには、os.walk()を使用して、単一のディレクトリにイメージファイルのリストを返します。この1つのリストからジェネレータを作ることはできますが、これらのリストをすべて1つのジェネレータに結合する方法はわかりません。どんな助けでも大歓迎です。
関連:このように
要素をpythonジェネレータに追加することはできますか?pythonジェネレータに要素を追加する
私は現在、一連の混乱したフォルダからすべての画像を取得し、新しいディレクトリに書き込もうとしています。ファイルを取得するには、os.walk()を使用して、単一のディレクトリにイメージファイルのリストを返します。この1つのリストからジェネレータを作ることはできますが、これらのリストをすべて1つのジェネレータに結合する方法はわかりません。どんな助けでも大歓迎です。
関連:このように
これは、ディレクトリのリストどこ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
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
。
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
よく機能します。
'itertools.chain(範囲(I)、範囲は(j)、範囲(k)) ' – jfs
@ JF Sebastian:範囲がos.walk(...)でないとき。 –
あなたはitertools.chain
を探しています。それはこのように、単一のものに複数の反復可能オブジェクトを結合します:
>>> for i in itertools.chain([1,2,3], [4,5,6]):
... print i
...
1
2
3
4
5
6
'os.walk'のコンテキストで' chain'をどのように使いますか? – jfs
@ J.F.Sebastian: 'チェーン(os.walk("。 ")、other_generator)'。 –
'chain.from_iterable(imap(os.walk、directories))' – jfs