Introdução à Programação

Propaganda
Ficheiros
Pickling
CSV
Trabalhar com ficheiros
Na última aula: ficheiros de texto
Hoje: pickling e ficheiros csv
João Pedro PEDROSO
Introdução à Programação - minor
Ficheiros
Pickling
CSV
Pickling: motivação
Quando se escreve num ficheiro, objetos têm de ser convertidos em
strings;
Quando se lê o ficheiro de texto, em geral é trabalhoso converter
objectos que não strings;
Por exemplo, se guardarmos duas variáveis, não se consegue
facilmente determinar onde acaba uma variável e onde começa outra:
>>> f = open("jpp.txt", "w")
>>> f.write(str(12.3))
>>> f.write(str([1,2,3]))
>>> f.close()
[...]
>>> f = open("jpp.txt", "r")
>>> f.readline()
’12.3[1, 2, 3]’
Mesmo com tipos simples — inteiros, vírgula flutuante — pode ser
trabalhoso escrevê-los em ficheiros e reconvertê-los de strings.
Com tipos compostos — listas, dicionários — isso é ainda mais
complicado.
João Pedro PEDROSO
Introdução à Programação - minor
Ficheiros
Pickling
CSV
Pickling
Solução: usar um módulo chamado pickle.
permite guardar facilmente variáveis do Python em ficheiro
em inglês: serializing e de-serializing de objetos Python
pickling: converter um objeto Python numa sequência de bytes
unpickling: converter uma sequência de bytes num objeto Python
utilizável com um grande número de objetos do Python.
Permite trabalhar com objetos persistentes: são guardados, e podem
ser reutilizados no futuro — eventualmente, por programas diferentes!
João Pedro PEDROSO
Introdução à Programação - minor
Ficheiros
Pickling
CSV
Pickling: utilização
Escrita, pickling:
dados: um objeto x e um objeto do tipo ficheiro (file) aberto para escrita
iremos serializar/conservar (pickling) o objeto no ficheiro:
>>> import pickle
>>> f = open("test.pck","w")
>>> pickle.dump(12.3, f)
>>> pickle.dump([1,2,3], f)
>>> f.close()
Leitura:
utilizando um objeto do tipo ficheiro (file) aberto para leitura, iremos
construir of valor para um objeto x que está pickled/serializado nesse
ficheiro:
>>> f = open("test.pck","r")
>>> x = pickle.load(f)
>>> x
12.3
>>> type(x)
<type ’float’>
>>> y = pickle.load(f)
>>> y
[1, 2, 3]
>>> type(y)
<type ’list’>
João Pedro PEDROSO
Introdução à Programação - minor
Ficheiros
Pickling
CSV
Módulo CSV
CSV: comma-separated values;
Formato “standard” em folhas de cálculo;
Funções principais:
csv.reader(csvfile[, dialect=’excel’][, fmtparam])
csv.writer(csvfile[, dialect=’excel’][, fmtparam])
Utilização:
import csv
f = open(’some.csv’, ’w’)
w = csv.writer(f)
w.writerows([[1,"Joao"],
[2,"Jose"],
[3,"Maria"]])
1,Joao
2,Jose
3,Maria
import csv
f = open(’some.csv’, ’r’)
reader = csv.reader(f)
for row in reader:
field1 = row[0]
field2 = row[1]
print(field1,field2)
1 Joao
2 Jose
3 Maria
João Pedro PEDROSO
Introdução à Programação - minor
Ficheiros
Pickling
CSV
Noções estudadas esta semana
abrir ficheiro (open) operação que deve preceder a leitura do seu
conteúdo
csv módulo que permite ler e escrever ficheiros no formato
comma-separated values
fechar ficheiro (close) o que se deve fazer com um ficheiro quando já não
for necessário
pickle módulo que permite ler e escrever ficheiros com dados do
Python
readline, readlines, read principais métodos para ler dados de um
ficheiro de texto
write principal método para escrever dados num ficheiro de texto
João Pedro PEDROSO
Introdução à Programação - minor
Ficheiros
Pickling
CSV
Próximas aulas
Recursão e fractais.
Programação orientada a objetos.
Aplicações.
João Pedro PEDROSO
Introdução à Programação - minor
Download