No laço For é usada a variável "linha" para chamar as linhas do arquivo, mas não entendi como que o python sabe que ao escrever linha (em portugues) eu estou chamando as linhas do arquivo.
No laço For é usada a variável "linha" para chamar as linhas do arquivo, mas não entendi como que o python sabe que ao escrever linha (em portugues) eu estou chamando as linhas do arquivo.
Olá, Fábio!
Isso não ocorre porque o nome da variável é linha. Qualquer outro nome de variável funcionaria.
É bastante similar ao que fazemos para fazer um loop nos itens de uma lista, por exemplo:
impares = [1, 3, 5, 7, 9]
for x in impares:
print(x)
O que acontece no caso do arquivo aberto é que você percorre o arquivo aberto linha por linha, por exemplo:
arquivo = open("exemplo.txt", "r")
for x in arquivo:
print(x)
Nesse caso, eu abri o arquivo através da variável arquivo e vou percorrer todas as linhas do mesmo no for. E, nesse caso, cada linha do arquivo aberto (exemplo.txt) será atribuída a variável x.
Acho que entendi a dúvida do colega, pois partilho dela:
Como o Python não sabe, por exemplo, se quero percorrer não "linha à linha", mas "caracter a caracter" ou "palavra à palavra"?
Olá, boa tarde
Acredito que seja algo intrínseco ao funcionamento do open. É como se o Python entendesse que o variador do for em um arquivo de texto será de linha em linha. E para acessar níveis mais internos, como caracter por caracter, é necessário fazer um for dentro de outro, como no exemplo a seguir, onde ele irá printar letra por letra de cada linha do arquivo palavras.txt. Como se estivesse "descascando" uma cebola.
Espero ter ajudado!
with open("palavras.txt","r") as arquivo:
for linha in arquivo:
for letra in linha:
print(f"{letra}")
òtima explicação, Eliseu.
Agradeco o esclarecimento