Exercícios Resolvidos de Arquivos

Ver Teoria

Enunciado

Ler arquivo cujo nome é indicado na entrada e exibir as suas 10 primeiras linhas.

Passo 1

Opa! Aqui a gente precisa abrir um arquivo e exibir as 10 primeiras linhas… Mas esse arquivo é arbitrário, blz? É um programa que serve pra qualquer arquivo, e por isso a gente precisa perguntar o nome do arquivo que é pra gente abrir no início do programa! E, pra perguntar, a gente usa a função input().

Então vamos começar por aí! Vou criar uma variável e guardar dentro dela o nome do arquivo que a gente vai ler...

E pronto! Agora que temos o nome, a gente só precisa abrir esse arquivo.

Passo 2

Pra abrir o arquivo, vamos usar a função open(). No primeiro parâmetro a gente vai indicar o nome do arquivo e no segundo, o tipo de operação de abertura que a gente quer… Como a gente quer só ler, vamos usar a operação “r” (de read, que significa “ler” em inglês). Se liga só:

Aí, show! A partir daqui, o arquivo tá aberto e salvo na variável arq, e a gente já pode começar a ler seu conteúdo. Pra ler uma linha, a gente poderia usar a função readline(), que já vem por padrão nas variáveis que armazenam arquivos. Tipo assim:

E assim esse programa vai ler a primeira linha do arquivo… Vamos executar esse programa pra ver como fica o resultado! Mas, cara, pra gente testar, a gente precisa de um arquivo pra ler, certo? Então vamos criar um!

Passo 3

Pra criar um arquivo de testes, vamos abrir o bloco de notas do PC e escrever alguma coisa. Mas lembre-se que essa coisa tem que ter mais de 10 linhas, afinal queremos ler as primeiras 10. Pra testar, eu copiei a letra do hino nacional e colei no bloco de notas...

Aí beleza, vamos salvar esse arquivo NA MESMA PASTA que você criou seu arquivo .py pra escrever o programa. Pra salvar no bloco de notas, usa Ctrl+S.

Agora que os arquivos estão na mesma pasta, bora executar o programa e testar.

Passo 4

Apertei pra executar o programa aqui e digitei o nome do arquivo, não esquecendo que os arquivos salvos pelo bloco de notas tem o final “.txt”. Aí fica assim:

Bom, por enquanto só exibiu uma linha, até porque foi o que a gente mandou fazer no código!

Mas eu queria enfatizar que ali em baixo do que a gente exibiu ficou uma linha vazia. E isso acontece porque, no fim da linha do arquivo no bloco de notas, a gente apertou enter pra pular de linha… Esse enter (que é um \n em Python) vem junto quando a gente usa a função arq.readline(), mas a gente não quer ela… E pra tirar ela, a gente pode usar o método de string .strip(). Assim:

Pronto! Agora, a gente pode testar de novo…

Dessa forma, o “\n” não vem junto, viu?! Show! Agora, em vez de exibir só uma linha, vamos modificar nosso programa pra exibir 10.

Parte 4

Pra exibir 10 vezes, só precisamos repetir o código do print() 10 vezes… A gente podia copiar e colar a linha 10 vezes e funcionaria, mas seu professor não vai gostar disso não!

Então, bora usar uma estrutura de repetição pra isso… Bora usar o for com range():

A gente criou uma variável i que não tá sendo usada pra nada, mas a gente precisa criar uma pra fazer o laço for. E o 10 dentro do range tá dizendo a quantidade de vezes que a gente quer que o código se repita!

Vamos executar esse programa pra ver o que acontece…

Ala! As 10 primeiras linhas foram exibidas! Mas talvez você esteja #EMCHOQUE, porque a gente repetiu o mesmo código e o programa leu diferentes linhas…

Mas isso aconteceu porque só é possível ler as informações do arquivo UMA VEZ. Com isso, a função readline() lê a primeira linha. E a cada vez que a gente chama ela, a primeira linha é “deletada” da variável que abrimos o arquivo, sacou?

Então, depois de ler a primeira linha, a segunda linha passa a ser a primeira linha! E por isso, podemos ler a segunda linha usando readline() de novo! E agora finalizamos o exercício, certo?!

Na verdade, a gente ainda precisa fechar o arquivo...

Passo 4

Cara, quando a gente abre um arquivo com a função open(), a gente precisa fechar esse arquivo antes do programa acabar… Não podemos esquecer esse passo, ok?! Na verdade, quando usamos a operação só de leitura, não faz muita diferença na prática.

Mas o seu professor vai descontar ponto se você não fechar o arquivo! E como a gente não gosta de perder ponto, bora chamar o método close() na última linha ali…

Mas repara bem que a gente fechou o arquivo FORA do laço de repetição, ok? Isso porque a gente só tem que fechar uma vez, depois de fazer todas as leituras… E, com isso, agora sim terminamos o exercício!

Valeuuu!

Resposta