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