Mês passado fiz um trabalho de equipe no curso técnico para a disciplina Inglês Técnico – III, que era escrever um glossário com termos relacionados a software, e outras equipes pesquisariam outros temas. Além disso era necessário desenvolver uma forma de visualizar os termos no computador, e o resultado foi este programinha em Python e Glade:

É bem simples, mas como muita gente que eu conheço tem curiosidade em relação ao Python e ao Glade este post será o primeiro mostrando passo-a-passo como fazer um programa parecido com o do meu trabalho. Parecido porque vou tentar melhorar o código do atual pra não passar vergonha aqui nas interwebs.
Se você está no Linux, basta instalar o Glade e provavelmente já terá tudo que precisa pra começar instalado aí. Quando muito falta instalar o PyGTK. Caso esteja no Windows, a coisa complica um pouco: você precisa baixar o interpretador Python, o GTK, o Glade (link para a versão sem GTK embutido), o PyGTK, PyGObject e o PyCairo e instalá-los (nessa ordem).
Dica: a instalação do GTK pelo arquivo do link é um porre, então instale o Geany, um IDE peso-leve, que fará essa tarefa por você e já serve para escrever os códigos que criaremos. Além de Python ele suporta várias outras linguagens, como Pascal, C, C++, Ruby, Java, C#, PHP, etc. Se correu tudo bem até aqui está pronto o seu ambiente de desenvolvimento.
Vamos para o código! O projeto usa como forma de armazenamento arquivos no formato CSV, permitindo assim abrir e editar o glossário como uma planilha do Excel ou do Calc. Felizmente o Python já traz na sua biblioteca padrão um módulo capaz de gerenciar a leitura e gravação desses arquivos. No entanto, estou repensando o código para que ele fique mais modular, de forma que você possa mudar essa característica sem ter de mexer no resto do código.
Apesar de existir uma especificação para o formato CSV é necessário apelar para auto-detecção ou definir o dialeto que será usado porque nem todos os programas usam os mesmo símbolos na hora de trabalhar com esses arquivos. Como auto-detecção é algo sujeito a falhas vamos definir o nosso próprio dialeto CSV. O que é feito na seguinte classe: (salve-a em um arquivo chamado “arquivos.py” que será o módulo de acesso aos arquivos do nosso programa)
Veja o código aqui. O WordPress estava bagunçando a indentação toda. =/
- “delimiter” é o caractere usado para separar os campos de um registro. No nosso caso os registros possuem dois campos: termo e descrição;
- “quotechar” é o caractere usado para aspas;
- “doublequote” quando verdadeiro (True) coloca dois quotechars seguidos caso no meio de um campo exista um quotechar, por exemplo: “aspas duplas são assim”", ficaria assim “aspas duplas são assim”"”;
- “skipinitialspace” quando verdadeiro determina que o parser deve ignorar espaços no começo dos campos;
- “lineterminator” diz qual o padrão usado para quebrar a linha, ou seja, indicar o fim do registro. O formato padrão de quebra de linha no *nix é “\n” mas se a IETF manda eu colocar o padrão do Windows eu coloco
;
- “quoting” indica o comportamento do módulo quanto ao uso das aspas. csv.QUOTE_ALL significa que todos os campos do registro devem estar entre aspas;
- Por fim, a última linha registra o dialeto que acabamos de criar para ser usado pelo módulo na interpretação e gravação do arquivo.
Pra não tornar a leitura muito cansativa vou encerrar este artigo por aqui. Na próxima “aula” finalizaremos a parte que mexe com os arquivos e começaremos a desenhar a interface no Glade. Quaisquer dúvidas estou à disposição nos comentários. Até lá!
import csv
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)