Baixe o app para aproveitar ainda mais
Prévia do material em texto
INF1025: Introdução à Programação Monitor: André Vicente Pessanha Resumo Arquivo: *************************************************************************************************** OBS: Essa matéria cai na P2 e P3! *************************************************************************************************** - O que é um arquivo? Sempre que vc ler a palavra "Arquivo" nos enunciados, é só imaginar um simples bloco de texto que armazena várias informações numa sequência de linhas. Sim! Esse PDF ou um simples bloco de notas também são exemplos de arquivo! :D ------------------------------------------------------- // ---------------------------------------------------------- - Como abrir um Arquivo? Usando a função open. Ela recebe dois parâmetros, o nome do arquivo OU o percurso do arquivo no HD e o modo de abertura: "r" (Read) para leitura OU "w" (Write) para gravação. ent = open("dados.txt", "r") Pra facilitar pense da seguinte forma: Considere a variável ent como se fosse uma ligação entre o seu programa e o bloco de notas. Dessa forma, podemos fazer leituras ou escrever no arquivo. (Dependendo do modo de abertura do Arquivo) ------------------------------------------------------- // ---------------------------------------------------------- - Percurso de um arquivo: (Primeiro Parâmetro da open) Existem duas formas de especificar o percurso de um arquivo: 1ª forma: Colocando o arquivo na mesma pasta do projeto no IDLE. (Na pasta onde está o arquivo .py do programa) ent = open(“dados.txt”, “r”) Notou que só usei o nome do arquivo no lugar do percurso? :D É possível colocar só o nome do arquivo ao invés do percurso completo, mas isso >> SÓ << vai funcionar se o arquivo estiver dentro da mesma pasta que o seu projeto no IDLE! (Percurso padrão) OBS: Essa é a forma que eu recomendo, pois além de ser a mais simples, evita vários possíveis erros que podem acontecer na segunda forma. 2ª Forma: Especificando o percurso completo do arquivo ent = open(“C:/Users/Andre/PythonProjects/dados.txt”, “r”) Primeiro passo é ir na pasta onde está o arquivo, selecionar com o botão direito do mouse e clicar em propriedades: Vai aparecer um trecho que começa com >> C:\ << Esse é o começo do percurso! OBS: Normalmente os arquivos das provas ficam nesse percurso: >> C:\Prova << Mas percebeu que o percurso não está completo? Ainda falta colocar o nome do arquivo que queremos abrir! E ainda falta um pequeno detalhezinho, precisamos trocar TODOS os contra-barra >> \ << do percurso pela barra comum >> / << Mas por que isso? :O Imagina que o nome do arquivo está todo em minúsculo: notas.txt Aparentemente tudo ok né? :D Mas infelizmente vai dar algum erro misterioso, o que será? :O Já que o percurso do arquivo é uma string, vamos tentar jogar isso na função print pra ver o que acontece: print("C:\Prova\notas.txt") Será exibido na tela: C:\Prova otas.txt Wait! cadê o n em notas.txt!? E o print pulou uma linha do nada! WHAT!? :O print("C:\Prova\notas.txt") Reconhece aquele >> \n << de algum lugar? :D Por isso que é importante trocar todos as contra-barras >> \ << do percurso pela barra comum >> / << pra não ter risco! :) ------------------------------------------------------- // ---------------------------------------------------------- - Modos de abertura: (Segundo Parâmetro da open) Todo arquivo que criamos pode ser aberto no modo de leitura “r” >> OU << em modo de gravação “w” sai = open("resultado.txt", "w") OBS: Existe um terceiro modo chamado Append “a” que serve ao mesmo tempo pra ler e escrever ou simplesmente podemos abrir o arquivo como “r+” ou “w+”, assim como em C. (Mas não era permitido usar nas provas, então confirme com o seu professor.) - Mas por que usar "ent" e "sai" como nome de variável de arquivo? Eu recomendo que vc use sempre >> ent << para arquivos de >> Leitura << (Entrada) E >> sai << para arquivos de >> Gravação <<! (Saída) Alguns professores costumam usar o mesmo nome "fp" ou “arq” pra ambos os casos. Mas cuidado! Usar o mesmo nome é pedir pra se confundir e errar! Principalmente em questões que manipulam vários arquivos ao mesmo tempo! Imagine que temos um arquivo que já está todo preenchido com dados (Toda prova costuma ter um ou dois arquivos desse tipo) mas ao invés de abrir o arquivo no modo leitura, sem querer abrimos no modo gravação. Quando isso acontece, todos os dados que estavam no arquivo são perdidos! Esse é um dos erros mais graves em prova! Cuidado! :( ------------------------------------------------------- // ---------------------------------------------------------- Principais Métodos de Arquivo: 1) O método close fecha o arquivo. ent = open(“dados.txt”, “r”) ent.close() OBS: É obrigatório fechar todos os arquivos no final do programa! Levando em conta que gravação em arquivo não funciona se o arquivo não for fechado no final do programa! E além disso, existe uma série de complicações se isso não for feito, então vc já pode prever que será tirado altos décimos caso esqueça de fechar o arquivo! :( 2) O método read armazena >> TODO << conteúdo de um arquivo numa string. OBS: Provavelmente esse método não será muito usado, pois a maioria das questões de arquivo envolvem ler uma linha de cada vez. 3) O método readline armazena uma >> ÚNICA << linha do arquivo. ent = open(“dados.txt”, “r”) linha = ent.readline() while (linha): # Condição será false se a string é vazia print(linha) linha = ent.readline() ent.close() OBS: Como o método armazena uma única linha por vez, para ler um arquivo inteiro, temos que obrigatoriamente usar uma repetição. É útil conhecer essa forma de leitura, mas ainda não é a melhor de todas. *********************************************************************************************** Melhor forma de ler arquivo: (Atalho) A repetição for é >> insuperável << na leitura de arquivos, pois a cada repetição, a variável linha do exemplo abaixo, armazena automaticamente a string de cada linha do arquivo. ent = open(“dados.txt”, “r”) for linha in ent: print(linha) ent.close() OBS: As linhas terminam com o caracter ‘\n’ (Caracter especial que pula linha em Strings) Notou que nesse for foi pulado duas linhas? Isso acontece porque existe um ‘\n’ que fica no final de cada linha do arquivo e outro “\n” que vem de brinde na função print! :D E se eu só quiser pular uma única linha? Use o método strip pra remover caracteres especiais! (Leia sobre ele no tópico “Principais Métodos” no resumo de String) ent = open(“dados.txt”, “r”) for linha in ent: linha = linha.strip() print(linha) ent.close() OBS: Dessa forma o ‘\n’ que foi lido do arquivo é removido da string linha! :) *********************************************************************************************** 4) O método write escreve no arquivo. x = 42.5 sai = open(“resultado.txt”, “w”) sai.write( str(x) ) OBS: Lembrando que só podemos gravar strings no arquivo, então precisamos sempre converter! E como faz pra escrever no arquivo com formatação? (Limitar casas decimais, etc) arq.write(“Resultado: %.2f\n” % x) OBS: O método write >> Não << coloca “\n” (Pula Linha) automaticamente no arquivo! Então precisamos sempre lembrar de colocar manualmente! Senão, a próxima string que tentar gravar, vai ficar colada ao lado da anterior! (Na mesma Linha) x = 42.5 sai = open(“resultado.txt”, “w”) sai.write("Resultado: %.2f" % x) sai.write("Pombo Voador\n")sai.write(“Agora sim Pulou Linha! :)\n”) sai.close() Como não colocamos “\n” no final da primeira gravação, será gravado no arquivo Resultado: 42.5Pombo Voador Agora sim Pulou Linha! :) ------------------------------------------------------- // ---------------------------------------------------------
Compartilhar