Posted by Mamutti on Mon 16 Nov 19:38
report abuse | download | new post
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- '''
- Glossário multiplataforma que usa arquivos CSV.
- Este módulo contém as classes que serão usadas para manipular a gravação e a
- carga dos arquivos de dados usados pelo glossário.
- @author: ygor
- '''
- import csv
- import codecs
- CODIFICACAO = 'utf-8'
- class ArquivosError(Exception):
- '''Classe de exceção para erros no manuseamento de arquivos.'''
- pass
- class DialetoCSV(csv.Dialect):
- '''Define o dialeto usado nos arquivos CSV contendo os glossários seguindo
- a especificação RFC4180.'''
- delimiter = ','
- quotechar = '"'
- doublequote = True
- skipinitialspace = True
- lineterminator = '\r\n'
- quoting = csv.QUOTE_ALL
- csv.register_dialect('default', DialetoCSV)
- def carregar(csvpath):
- '''Lê o arquivo csvpath e retorna um dict com os registros, onde as
- chaves são os termos e os valores os significados.'''
- termos = {}
- try:
- csvfile = codecs.open(csvpath, 'r', CODIFICACAO)
- except IOError, erro:
- if erro.args[0] == 2:
- # O argumento igual a 2 significa que o caminho fornecido não
- # existe ("no such file or directory")
- csvfile = codecs.open(csvpath, 'w', CODIFICACAO)
- else:
- raise ArquivosError('Erro de E/S: %s' % erro)
- else:
- reader = csv.reader(csvfile, dialect='default')
- for i in reader:
- termos[i[0]]= i[1]
- finally:
- csvfile.close()
- return termos
- def gravar(glossario):
- '''Grava os dados do glossário fornecido no seu arquivo.'''
- try:
- csvfile = codecs.open(glossario.path, 'wb', CODIFICACAO)
- except IOError, erro:
- raise ArquivosError('Erro ao gravar o arquivo: %s' % erro)
- else:
- writer = csv.writer(csvfile, dialect='default')
- writer.writerows(glossario.items())
- finally:
- csvfile.close()
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.