Ajout d'éléments générateurs de python
Question
Est-il possible d'ajouter des éléments à un générateur de python?
J'essaie actuellement d'obtenir toutes les images à partir d'un ensemble de dossiers désorganisés et les écrire dans un nouveau répertoire. Pour obtenir les fichiers, j'utilise os.walk () qui retourne une liste de fichiers d'image dans un seul répertoire. Alors que je peux faire un générateur de cette liste unique, je ne sais pas comment combiner toutes ces listes en un seul générateur. Toute aide serait très apprécié.
Related:
La solution
Cela devrait le faire, où directories
est votre liste de répertoires:
import os
import itertools
generators = [os.walk(d) for d in directories]
for root, dirs, files in itertools.chain(*generators):
print root, dirs, files
Autres conseils
Vous cherchez itertools.chain
. Il associera plusieurs iterables en une seule, comme ceci:
>>> 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
Comme ça.
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
fonctionne bien.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow