Buscar

[INF1025] Resumo Arquivo

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​\n​otas.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! :) 
 
 
 
 
 
 
------------------------------------------------------- // ---------------------------------------------------------

Continue navegando