Você está na página 1de 32

Arquivos

Waldemar Pires
adaptado
Ceça Moraes – cecafac@gmail.com
Computação LP2

1
Conteúdo
• Arquivos
– Conceitos
– Operações
– Métodos
– Exercícios

2
Arquivos
• Entrada e saída são operações de
comunicação de um programa com o
mundo externo
• Essa comunicação se dá usualmente
através de arquivos
• Em Python, um arquivo pode ser
lido/escrito através de um objeto da
classe file
3
Arquitetura Básica de um
Computador
Até agora, toda a
informação
armazenada por
nossos programas
estava na memória
RAM, que é rápida,
porém, volátl.

Hoje aprenderemos
armazenar
informação na
memória secundária
(disco), que é lenta,
porém, persistente.
Arquivo
• Elemento de informação armazenado na memória secundária
(disco) do computador
• Característcas:
– Informações persistem após o fechamento dos programas e até
mesmo após o desligamento (seguro) do computador;
– Atribuem-se nomes aos elementos de informação (arquivos e
diretórios), em vez de endereços de memória;
– Acesso às informações é mais lento.
Modos de Acesso a Arquivos
– Modo Texto: Ex.: código fonte (texto)
• Caracteres que podem ser lidos por
pessoas
• Ex.: Código fonte de um programa
(Cubo.c)
• Outros exemplos: .txt, .bat, .cpp, .h

Ex.: programa executável


(binário)
– Modo Binário:
• Valores binários
• Não podem ser lidos quando abertas
em editores de texto simples.
• Ex.: Programa executável: (Cubo.exe)
• Outros exemplos: .docx, .pdf, .xlsx,
.jpg, .gif, .mp3
Modo Binário
• Dados são armazenados da mesma forma
que são armazenados na memória principal
• Vantagens:
– Facilmente interpretados por programas;
– Compactação
– Maior velocidade de manipulação;
• Desvantagens:
– Difcil leitura
Modo Texto
• Sequência de caracteres agrupados em linhas
• Linhas separadas por um caractere de nova linha (‘\n’, em C)
• Vantagens:
– Pode ser lido facilmente por uma pessoa
– Editado por editores de texto convencionais
• Desvantagens
– Codifcação dos caracteres pode variar (ASCII, UTF-8, ISO-8859, etc)
– Arquivos tendem a ser maiores (todas os dados são convertdos para
caracteres).
• Ex: número 2147483647
– Em binário: inteiro de 32 bits
– Em texto: 10 caracteres (80 bits).
• Piora para reais: 123456789,987654321 pode ser bem representado por
um foat de 32 bits.
Operações em Arquivos
• Abertura (open):
– Sistema Operacional (SO) encontra arquivo pelo nome
– Prepara bufer na memória para armazenar o arquivo
• Leitura (read):
– SO recupera o trecho solicitado do arquivo
– Parte do arquivo ou o arquivo todo pode vir do bufer
• Escrita (write):
– SO altera conteúdo do arquivo
– A alteração é feita primeiro no bufer para depois ser transferida para o disco
– Pergunta: quando? Resposta: periodicamente ou no fechamento do arquivo
• Fechamento (close):
– A informação do bufer é atualizada no disco
– Área do bufer utlizada na memória é liberada
Abrindo Arquivos
• open (name, mode)
– name: nome do arquivo a abrir
– mode: (opcional) modo de abertura – string
contendo
• r : leitura (default)
• w : escrita (se o arquivo existr terá o conteúdo
apagado
• a : escrita a partr do fnal (não apaga conteúdo)
• r+ : indica leitura e escrita
• b : binário (rb, wb, ab) 10
Exemplo
• O comando open retorna um objeto do tpo
file (arquivo)
• O objeto file é usado para operações de
entrada e saída:
>>> arq = open ("teste.txt", "w")
>>> arq.write ("Oi")
>>> arq.close ()
>>> arq = open ("teste.txt")
>>> x = arq.read()
>>> x
'Oi' 11
Open
>>> f = open(‘texto.txt','w')
>>> f.write('Ola Mundo!')

• Não devemos esquecer de fechar o


arquivo:

>>> f.close()

12
Métodos Read, Write e
Close
• read(num)
– Lê num bytes do arquivo e os retorna numa
string
– Se num não é especifcado, todos os bytes
desde o ponto atual até o fm do arquivo
são retornados

13
Métodos Read, Write e
Close
• write(string)
– Escreve string no arquivo
– Devido ao uso de bufers, a escrita pode
não ser feita imediatamente
• Use o método flush() ou close()
para assegurar a escrita fsica
• close()
– Termina o uso do arquivo para operações
de leitura e escrita 14
ExemploRead
>>> f = open(‘texto.txt',‘r‘)
>>> ler = f.read()
>>> f.close()
>>> print( ler)
Ola Mundo!

• Metodo read() usado sem nenhum


argumento, mostrará tudo que esta no
aquivo
15
ExemploRead
• Se quisermos ler apenas os três primeiros
caracteres (bytes), podemos usar da seguinte
maneira:
>>> f = open(‘texto.txt’) # r é
default
>>> ler = f.read(3)
>>> f.close()
>>> print (ler)
Ola
16
ExemploRead
• e caso queira ler o restante, o read()
começará de onde parou:
>>> restante = f.read()
>>> print (restante)
Mundo!

17
Fim de Linha
• Arquivos de texto são divididos em linhas
usando caracteres especiais
• Python usa sempre \n para separar
linhas
– Leitura ou escrita de arquivo aberto em
modo texto
– Em modo binário, entretanto, a conversão
não é feita
18
Lendo e Escrevendo
Linhas
• readline(n)
– Se n não é especifcado, retorna
exatamente uma linha lida do arquivo
– Caso contrário, lê uma linha, mas busca no
máximo n caracteres pelo fnal de linha
– Se o tamanho da linha é zero signifca que o
final do arquivo foi atngido

19
Lendo e Escrevendo
Linhas
• readlines(n)
– Se n não é especifcado, retorna o restante
do conteúdo do arquivo em uma lista de
strings
– Caso n seja especifcado, a leitura é limitada
a n caracteres no máximo

20
Lendo e Escrevendo
Linhas
• writelines(lista)
– Escreve a lista (ou qualquer seqüência)
de strings, uma por uma no arquivo

– Caracteres de fnal de de linha não são


acrescentados

21
Exemplos
• adicionar mais alguma coisa no arquivo do
exemplo:
>>> f = open(‘texto.txt’, ‘a‘)
>>> f.write('\nOla Python')
>>> f.close()
• o 'a' (append) é usado para adicionar texto
sem apagar o que ja havia no arquivo
• '\n' é usado pra pular uma linha, lembrando
que tudo é string ( este caractere fca visível)22
Exemplos
>>> f = open(‘texto.txt',‘r‘)
>>> linha1 = f.readline()
>>> linha2 = f.readline()
>>> f.close()
>>> print (linha1)
Ola Mundo!\n
>>> print (linha2)
Ola Python
23
Exemplos

24
Resumo
operação Interpretação
output = open(“c:/teste.txt”,”w”) Cria arquivo de saída (“w” signifca gravação)
input = open(“c:/teste.txt”,”r”) Cria arquivo de entrada (“r” signifca leitura)
S = input.read() Lê o arquivo inteiro em uma única string
S = input.read(N) Lê N byte (1 ou mais)
S = input.readline() Lê a próxima linha
L = input.readlines() Cria uma lista onde cada elemento é uma linha
do arquivo
output.write(S) Grava a string S no arquivo
output.writelines(L) Grava no arquivo todas as strings da lista L
output.close() Fechamento manual do arquivo

25
EXERCÍCIOS
26
Exercícios
1. Escreva um programa que lê um arquivo contendo a
identdade e o nome de várias pessoas, no seguinte
formato
5384423 Manoel
4345566 Alberto
3235574 Mariana
...
o programa deve colocá-los em duas listas disttas

27
Exercícios
2. Escreva um programa que lê um arquivo contendo
endereços IPs, da seguinte forma:
200.135.80.9
192.168.1.1
8.35.67.74
257.32.4.5
85.345.1.2
1.2.3.4
9.8.234.5
192.168.0.256
• O programa deve mostrar os IPS indicando os que
são validos e inválidos (um endereço ip válido não
pode ter uma de suas partes maior que 224).
28
Exercícios
3. Crie um programa que lê um dicionário
que é uma agenda contendo várias
ocorrências dos seguintes dados:
chave, nome, idade, telefone. O
programa deve escrever todos os itens
do dicionário em um arquivo no
seguinte formato chave: nome-idade-
fone.
29
Exercícios
4. Faça um programa que leia um número qualquer de
notas em um arquivo. Após a leitura dos dados, faça
o seguinte:
– Mostre a quantdade de notas que foram lidas.
– Exiba todas as notas na ordem em que foram
informadas.
– Exiba todas as notas na ordem inversa à que
foram informadas, uma abaixo do outra.
– Calcule e mostre a soma das notas.
– Calcule e mostre a média das notas.
– Calcule e mostre a quantdade de notas acima da
média calculada. 30
Exercícios
5. Inicialize uma lista de 20 números inteiros.
Armazene os números pares em uma lista
PAR e os números ímpares em uma lista
IMPAR. Salve as listas PAR e IMPAR em um
arquivo.
6. Faça um programa que leia a temperatura
média de cada mês do ano em um arquivo e
armazene-as em uma lista. Em seguida,
calcule a média anual das temperaturas e
mostre a média calculada juntamente com
todas as temperaturas acima da média anual,
e em que mês elas ocorreram (mostrar o mês
por extenso: 1 – Janeiro, 2 – Fevereiro, . . . ).31
Bibliografa
 Livro “Como pensar como um Cientsta de Computação
usando Python” – Capítulo 11
 htp://pensarpython.incubadora.fapesp.br/portal
 Python Tutorial
 htp://www.python.org/doc/current/tut/tut.html
 Dive into Python
 htp://www.diveintopython.org/
 Python Brasil
 htp://www.pythonbrasil.com.br/moin.cgi/Documenta
caoPython#head5a7ba2746c5191e7703830e02d0f532
8346bcaac

32

Você também pode gostar