Pergunta

É possível acrescentar elementos a um gerador de python?

Atualmente estou tentando obter todas as imagens a partir de um conjunto de pastas desorganizado e escrevê-los para um novo diretório. Para obter os arquivos, estou usando os.walk () que retorna uma lista de arquivos de imagem em um único diretório. Embora eu possa fazer um gerador de fora desta lista única, não sei como combinar todas estas listas em um único gerador. Qualquer ajuda seria muito apreciada.

Relacionado:

Foi útil?

Solução

Isso deve fazê-lo, onde directories é a sua lista de diretórios:

import os
import itertools

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

Outras dicas

Você está procurando itertools.chain . Vai combinar várias iterables em uma única, 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

Assim.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top