Teoria
Fala aí, cara! É provável que todos os programas que você escreveu até aqui não utilizava nenhum dado externo. Mas, pode ser útil ler os dados de um arquivo de texto, em vez de perguntar tudo pro usuário com a função input(). Por exemplo, se você tiver um arquivo de texto com as notas de todos os alunos de uma turma e quiser calcular suas médias, pode fazer um programa que lê esse arquivo pra obter esses dados, sacou?
Abrindo arquivos
Se liga! Pra abrir um arquivo, a gente usa a função open(). Passamos como parâmetro o nome do arquivo que a gente quer ler e a letra “r” entre aspas, respectivamente. O arquivo que foi aberto ficou salvo na variável “arquivo”.
O arquivo deve estar na mesma pasta que o programa que você tá escrevendo em Python. Além disso, não pode esquecer de colocar a extensão do arquivo. Nesse caso, arquivos de texto tem extensão “.txt”, então a gente geralmente vai colocar o nome do arquivo com o “.txt” no final.
Além disso, a gente coloca aquele “r” no segundo parâmetro pra indicar que a gente só quer ler esse arquivo. Abrindo o arquivo assim a gente só consegue ler, mas não consegue escrever, ok?! No próximo tópico a gente vai falar sobre como escrever arquivos, mas por enquanto vamos só ler, ok?!
Por último, repara que eu fiz um arquivo.close() ali. Essa linha é obrigatória. Se você abriu um arquivo, você PRECISA fechar ele antes de finalizar o seu programa! Essa linha deve ficar no fim do código que você abriu o arquivo. A dica é, assim que você abrir um arquivo, já escreve logo o comando pra fechar. Assim você não esquece dele. Aí depois você escreve todo seu programa entre essas duas linhas.
Função read()
Quando o arquivo é aberto e colocado numa variável, ele não está em formato de texto. A função read() é capaz de ler todo o arquivo e transformar numa string.
Dessa forma, todo o texto presente no arquivo vai ser armazenado na variável em_texto. Mas também é possível ler uma linha de cada vez.
Função readline()
A função readline() lê uma linha do arquivo (a primeira), e salva numa variável.
Talvez você esteja se perguntando como ler as outras linhas do arquivo, e é aí que entra os cuidados que você tem que tomar quando estiver usando arquivos… Só dá pra ler o arquivo uma vez, ok? Se você usar a função read() num arquivo, ela não vai funcionar de novo. Se você usar a readline(), na segunda vez a o resultado vai ser a segunda linha, e assim por diante.
Viu? Repara que com o mesmo código, os resultados vão ser diferentes, e não dá pra ler duas vezes a mesma linha. Tenta lembrar que não é possível ler o mesmo dado duas vezes no arquivo! O que você já leu uma vez, já era! Tem que deixar tudo salvo.
Iterando pelo arquivo
Agora que tu já tá ligado em como fazer as operações de leitura manualmente, vou te mostrar que dá pra ler o arquivo inteiro, uma linha por vez, usando a estrutura for.
Esse código exibe todas as linhas do arquivo. Isso porque o for vai repetir o código que estiver dentro do seu escopo pra todas as linhas do arquivo, ok?!
Escrevendo arquivo
Pra escrever um arquivo, você precisa trocar o “r” por “w”.
Dessa forma, caso o arquivo não exista, será criado um novo. Mas caso já exista, será sobrescrito, jae?!
Depois que você abrir um arquivo com permissões de escrita, pode usar a função write() pra escrever nele.
Mas tu lembra do \n? O “\n” é como apertar enter no teclado, ele pula uma linha. Se você for escrevendo no arquivo, vai ficar tudo um do lado do outro. Pra pular linha, você não pode esquecer de colocar o \n no final, beleza?!
Não esquece de fechar o arquivoooooo
Cara! Eu juro que não chamar a função close() no final é um problemão! Pra você ficar craque em resolver problemas com arquivos, vamos pros exercícios de fixação. Lá, os exemplos com arquivos prontos vão facilitar muito o teu entendimento. Tô te esperando lá!