No final do artigo da página https://www.alura.com.br/artigos/o-que-sao-iteradores-no-python, é sugerido que é possível diminuir o código usndo geradores, mas os exemplos da documentação são com inteiros, usando generate_ints. É possível usar para stings?
class IteradorHttp():
def __init__(self):
self.registro = open('acessos.log', 'r')
self.linha_atual = ''
def __iter__(self):
return self
def __next__(self):
self.linha_atual = self.registro.readline()
while self.linha_atual and not self.linha_atual.startswith('http://'):
self.linha_atual = self.registro.readline()
if self.linha_atual:
return self.linha_atual
raise StopIteration
iterador = IteradorHttp()
for url in iterador:
print(url)
Como a ideia é fazer lazy evaluation desse código com geradores, resolvi buscar o forum pra ver como alguem que entende mais faria