Pregunta

¿Es posible anexar elementos a un generador de Python?

Actualmente estoy tratando de obtener todas las imágenes de un conjunto de carpetas desorganizadas y escribirlos en un nuevo directorio. Para obtener los archivos, estoy usando os.walk (), que devuelve una lista de archivos de imagen en un solo directorio. Mientras que puedo hacer un generador de salir de esta lista única, no sé cómo combinar todas estas listas en un solo generador. Cualquier ayuda sería muy apreciada.

Relacionado:

¿Fue útil?

Solución

Esto debe hacerlo, donde directories es su lista de directorios:

import os
import itertools

generators = [os.walk(d) for d in directories]
for root, dirs, files in itertools.chain(*generators):
    print root, dirs, files

Otros consejos

itertools.chain . Será combinar múltiples iterables en uno solo, como este:

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

Al igual que este.

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

funciona bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top