1
resposta

capítulo 6, exercício 10

O referido exercício mostra o seguinte código, numa parte dele:

def jogar():

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

*    for linha in arquivo:
        palavras.append(linha)*

    arquivo.close()

repare no laço for: como funciona isso de a variável criada no laço for "linha" reconhecer que deve adicionar à lista palavras = [] através da função append, as palavras inteiras, por linhas, contidas no arquivo.txt se não está explicitado isso e tão somente o nome da variável?

desde já agradeço, abraço.

1 resposta

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!