Adicionando elementos para geradores python
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:
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