Olá Pedro, tudo bem com você?
Peço desculpas pela demora em lhe responder.
Por padrão, a função open, irá retornar um objeto que é um iterável, ou seja, algo que pode ter zero ou muitos elementos. Se imprimirmos o retorno da função open, teremos um retorno da classe TextIOWrapper, como mostro abaixo:
arquivo = open("objetos.txt", "r")
print(arquivo)
Resultado
<_io.TextIOWrapper name='objetos.txt' mode='r' encoding='UTF-8'>
E esse objeto da classe TextIOWrapper
, irá armazenar todo o texto do arquivo identificando as quebras de linhas através do \n
(barra n), onde cada \n
será um elemento desse objeto iterável. Por isso que ao realizarmos a operação for linha in arquivo, é possível saber o conteúdo de cada linha.
Outra forma de ler as linhas do arquivo sem o auxílio de um laço de repetição, é utilizar o readlines
:
arquivo = open("objetos.txt", "r")
print(arquivo.readlines())
Resultado:
['caneta\n', 'lapis\n', 'tesoura\n', 'papel']
Em resumo, internamente, o Python, através da classe TextIOWrapper, trabalha por debaixo dos panos para transformar o texto do arquivo em um objeto iterável, similar a uma lista, onde cada linha finalizada com barra n (\n, quebra de linha) é um elemento dessa lista, e através do laço de repetição percorremos item a item dessa lista.
No exemplo da atividade proposta, é necessário que cada palavra esteja em uma linha, para que seja feito o reconhecimento de forma correta.
Recomendo as seguintes leituras para saber um pouco mais sobreTextIOWrapper:
Na Alura também temos um curso que aborda esse tema:
Recomendo também que veja duas aulas onde o professor mostra como é feito a leitura dos arquivos:
Caso tenha alguma dúvida me coloco à disposição.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!