Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Por que as diferenças nas saídas?

Prezados, boa tarde,

Assistindo a aula "Outras formas de leitura" o instrutor na minutagem 8:00, pede para que apaguemos a variável "conteudo = arquivo_contatos.readlines()" e façamos a execução do código com um modificação no comando "for". A partir dessa minutagem, o código fica:

arquivo_contatos = open('dados/contatos.csv',encoding= 'latin_1')

for linha in arquivo_contatos:
    print(linha,end=' ')

A impressão ocorre como mostrada no vídeo. Porém, se eu fizer o código:

arquivo_contatos = open('dados/contatos.csv',encoding= 'latin_1')

conteudo = arquivo_contatos.readlines() # ATEÇÃO NESSE PONTO

for linha in arquivo_contatos:
    print(linha,end=' ')

A execução não realizada, minha pergunta é, por que isso ocorre, lembrando que mesmo com a presença da variável "conteudo" o comando "for" está sendo referenciado à variavel "arquivo_contatos". Por que a presença em código da variável "conteudo" prejudica a impressão do código? Tanto é que quando a lemovo (igual ao vídeo mostra) a execução é realizada.

Não sei se tem interferência, mas utilizo o Pycharm.

Abraços, e obrigado

4 respostas

Boa tarde, quando tu executas esta linha: conteudo = arquivo_contatos.readlines(), o ponteiro do arquivo aponta para o final do mesmo. Portanto, no comando for, ele não está no final do arquivo e não tem nada pra mostrar. O correto é tu usar conteudo e não arquivo_contatos no for. for linha in conteudo: print(linha,end=' ')

Oi Marcos, primeiramente obrigado pela respotas.

Então, mesmo quando não peço para printar a variável "conteudo" ele ainda assim vai para o final do documento? Mesmo eu pedindo que ele faça o print do "arquivo_contatos"? É isso?

solução!

Boa tarde Diogo, não é o print que faz o ponteiro se deslocar para o final do arquivo e sim o comando arquivo_contatos.readlines(). Com o readlines(), tu pediu pra ler todas as linhas até o final do arquivo.

Ahhhh tá. Blzinha então Marcio, obrigado pela ajuda!

Abraços,