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

readline supostamente ignorando linhas pares?

Olá,

Eu utilizei um código de teste muito semelhante ao que o professor expôs:

arquivo = open("palavras.txt", "r")
    palavras = []

    for linha in arquivo:
        linha = arquivo.readline().strip()
        palavras.append(linha)
    arquivo.close()

    print(palavras)

curiosamente, esta função tem retornado apenas as linhas pares do meu arquivo. Por que isso tem acontecido? Mesmo removendo a função strip, o resultado é o mesmo, retornando apenas as linhas pares incluindo o "\n" ao final.

Observei que no em um $cat palavras.txt a última palavra inclui um % ao final, isso significa fim do arquivo?

fyi: eu criei este arquivo "palavras.txt" via terminal e não com uma série de comandos "append" ou "write" no python. Além disso, print(arquivo.read()) exibe exatamente como meu arquivo se encontra. Isto é:

pretzel
maça
morango
rapaz
melancia
2 respostas
solução!

Opa, boa noite, tudo certo aí?

Cara, você não precisa usar o arquivo.readline(), por que o linha definido no for, já representa cada linha do arquivo. Pensa o seguinte, na primeira iteração, o linha está apontando para a primeira linha do arquivo, quando você executa o arquivo.readline() dentro do for, você faz com que o leitor do arquivo passe para a segunda linha(por isso sempre as pares).

Você pode rescrever seu código assim:

palavras = []

arquivo = open("palavras.txt", "r")

for linha in arquivo:
    linha = linha.strip()
    palavras.append(linha)
arquivo.close()

print(palavras)

Muito obrigado Elias, alguns detalhes sempre passam despercebidos!