21.12.2022 Views

python_para_desenvolvedores_2ed

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

96 Geradores

# -*- coding: latin-1 -*-

import os

# Encontra arquivos recursivamente

def find(path='.'):

for item in os.listdir(path):

fn = os.path.normpath(os.path.join(path, item))

if os.path.isdir(fn):

for f in find(fn):

yield f

else:

yield fn

# A cada iteração, o gerador devolve

# um novo nome de arquivo

for fn in find('c:/temp'):

print fn

Existem vários geradores que fazem parte da própria linguagem, como o

builtin xrange() 22 . Além disso, no módulo itertools, estão definidos vários

geradores úteis.

Para converter a saída do gerador em uma lista:

lista = list(gerador())

Assim, todos os itens serão gerados de uma vez.

22 O gerador xrange() pode substituir a função range() na maioria dos casos e a sintaxe é a

mesma, com a vantagem de economizar memória.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!