pastebin - collaborative debugging

pastebin is a collaborative debugging tool allowing you to share and modify code snippets while chatting on IRC, IM or a message board.

This site is developed to XHTML and CSS2 W3C standards. If you see this paragraph, your browser does not support those standards and you need to upgrade. Visit WaSP for a variety of options.

icaju private pastebin - collaborative debugging tool What's a private pastebin?


Posted by Mamutti on Mon 16 Nov 19:38
report abuse | download | new post

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. '''
  4. Glossário multiplataforma que usa arquivos CSV.
  5.  
  6. Este módulo contém as classes que serão usadas para manipular a gravação e a
  7. carga dos arquivos de dados usados pelo glossário.
  8.  
  9. @author: ygor
  10. '''
  11.  
  12. import csv
  13. import codecs
  14.  
  15. CODIFICACAO = 'utf-8'
  16.  
  17. class ArquivosError(Exception):
  18.     '''Classe de exceção para erros no manuseamento de arquivos.'''
  19.     pass
  20.  
  21. class DialetoCSV(csv.Dialect):
  22.     '''Define o dialeto usado nos arquivos CSV contendo os glossários seguindo
  23.    a especificação RFC4180.'''
  24.     delimiter = ','
  25.     quotechar = '"'
  26.     doublequote = True
  27.     skipinitialspace = True
  28.     lineterminator = '\r\n'
  29.     quoting = csv.QUOTE_ALL
  30.  
  31. csv.register_dialect('default', DialetoCSV)
  32.  
  33. def carregar(csvpath):
  34.     '''Lê o arquivo csvpath e retorna um dict com os registros, onde as
  35.    chaves são os termos e os valores os significados.'''
  36.     termos = {}
  37.     try:
  38.         csvfile = codecs.open(csvpath, 'r', CODIFICACAO)
  39.     except IOError, erro:
  40.         if erro.args[0] == 2:
  41.             # O argumento igual a 2 significa que o caminho fornecido não
  42.             # existe ("no such file or directory")
  43.             csvfile = codecs.open(csvpath, 'w', CODIFICACAO)
  44.         else:
  45.             raise ArquivosError('Erro de E/S: %s' % erro)
  46.     else:
  47.         reader = csv.reader(csvfile, dialect='default')
  48.         for i in reader:
  49.             termos[i[0]]= i[1]
  50.     finally:
  51.         csvfile.close()
  52.     return termos
  53.  
  54. def gravar(glossario):
  55.     '''Grava os dados do glossário fornecido no seu arquivo.'''
  56.     try:
  57.         csvfile = codecs.open(glossario.path, 'wb', CODIFICACAO)
  58.     except IOError, erro:
  59.         raise ArquivosError('Erro ao gravar o arquivo: %s' % erro)
  60.     else:
  61.         writer = csv.writer(csvfile, dialect='default')
  62.         writer.writerows(glossario.items())
  63.     finally:
  64.         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.

Syntax highlighting:

To highlight particular lines, prefix each line with @@


Remember me so that I can delete my post