Hinzufügen von Elementen zu Python Generatoren
Frage
Ist es möglich, Elemente zu einem Python-Generator anhängen?
Ich versuche zur Zeit alle Bilder von einer Reihe von unorganisierten Ordner zu erhalten und sie in ein neues Verzeichnis zu schreiben. Um die Dateien zu bekommen, ich bin mit os.walk (), die eine Liste von Bilddateien in einem einzigen Verzeichnis zurückgibt. Während ich einen Generator aus dieser einzigen Liste machen kann, weiß ich nicht, wie all diese Listen zu einem einzigen Generator zu kombinieren. Jede Hilfe wäre sehr geschätzt.
Siehe auch:
Lösung
Das sollte es tun, wo directories
Ihre Liste von Verzeichnissen ist:
import os
import itertools
generators = [os.walk(d) for d in directories]
for root, dirs, files in itertools.chain(*generators):
print root, dirs, files
Andere Tipps
Sie suchen itertools.chain
. Es wird mehrere Iterables zu einem einzigen kombinieren, wie folgt aus:
>>> for i in itertools.chain([1,2,3], [4,5,6]):
... print i
...
1
2
3
4
5
6
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
Wie dies.
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
Funktioniert gut.