quarta-feira, 6 de maio de 2015

Escrita e Leitura de CSV como dicionário

class csv.DictReader(csvfile[, fieldnames=None[, restkey=None[, restval=None[, dialect='excel'[, *args, **kwds]]]]])

Criar um objeto que funciona como um leitor regular mas mapeia as informações ler em um dicionário cujas chaves são dadas pelo parâmetro fieldnames opcional.

Se o parâmetro fieldnames for omitido, os valores na primeira linha da csvfile vai ser utilizado como os nomes de campos. [1]

#************************************************************************
#!/usr/bin/python
# -*- coding: utf-8 -*-
#************************************************************************
import csv
#************************************************************************
class Teste(object):
    '''Classe
    '''
    _atributoclasseINVISIVEL = []
    atributoclasseVISIVEL = []
   
    def __init__(self):#trata os diretórios como pacotes.
        '''init
        '''
        vatributolocali = 't'

        print('init')

    def leituraCSV():
        '''leitura
        '''
        vatributolocall = 0
       
        try:
            with open('teste.csv') as csvfile:
                reader = csv.DictReader(csvfile)
                for row in reader:
                    print(row['primeiro_nome'], row['segundo_nome'])
        except:
            print('Erro leitura.')

    def escritaCSV():
        '''escrita
        '''
        vatributolocale = 3
       
        try:
            with open('teste.csv', 'w') as csvfile:
                fieldnames = ['primeiro_nome', 'segundo_nome']
                writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
               
                writer.writeheader()
                writer.writerow({'primeiro_nome': 'Ubiratan', 'segundo_nome': 'Uaatsim'})
                writer.writerow({'primeiro_nome': 'Lucia', 'segundo_nome': 'Souza'})
                writer.writerow({'primeiro_nome': 'Marina', 'segundo_nome': 'Persona'})
        except:
            print('Erro escrita.')
#************************************************************************


#************************************************************************
if __name__ == '__main__':#pode ser usado como script ou módulo.
    Teste()
    print ('Classe instanciada - Teste.')
#************************************************************************


Execução do script.
Arquivo: teste.csv


#--------------------------------------------------------------------------------------------
    def escritaCSV2():
        '''escrita
        '''
        vatributolocale = 3

        cabecalho = ['PESSOA 1','PESSOA 2','PESSOA 3']
        linha = [{'PESSOA 1':'Lucia Souza','PESSOA 2':'Marina Persona','PESSOA 3':'Marina Persona'}}]
        linha2 = [{'PESSOA 1':'Itzá I','PESSOA 2':'Guaranis','PESSOA 3':'Tupinambás'}]
       
        try:
            with open('teste2.csv', 'w') as f:
                writer = csv.DictWriter(f, fieldnames=cabecalho)
                writer.writeheader()
                writer.writerows(linha)
                writer.writerows(linha2)
        except:
            print('Erro escrita 2.')

    def leituraCSV2():
        '''leitura
        '''
        vatributolocall = 0
       
        try:
            with open('teste2.csv') as f:
                reader = csv.DictReader(f)
                for row in reader:
                    pass
        except:
            print('Erro leitura 2.')
           
        print(row['PESSOA 1'], row['PESSOA 2'],row['PESSOA 3'])
       
#************************************************************************


Arquivo: teste2.csv

Referências
[1] https://docs.python.org/2/library/csv.html
[2]
.

Nenhum comentário:

Postar um comentário