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:

Était-ce utile?

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
scroll top