Skip to content

Glossário virtual em Python e Glade – parte I

08/10/2009

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 :P;
  • “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)

Anúncios
5 Comentários leave one →
  1. Gabrielle permalink
    09/10/2009 9:57

    Sou uma grande fã e adoro programar em Python. Mas toda essa complicação para programar em Windows fez com eu criasse preferencia no desenvolvimento com C++ usando o QtCreator quando é para uma aplicação com interface gráfica que precise rodar em Windows e Linux. Apesar de ser 178MB no Windows (Qt SDK completo), o QtCreator é fácil de instalar e utilizar em ambas plataformas.

    Parece legal o glossário, espero que Java tenha sua devida definição. Também espero que tenha problemas com charset.

    • 09/10/2009 21:27

      Realmente é um porre usar Python e GTK no Windows. Um dia ainda vou empacotar isso tudo com o Eclipse + PyDev e aí vou ficar rico ensinando Python para programadores Java. E sim, estou tendo problemas com charset no código do próximo post! 😀

      Você poderia colaborar registrando aqui a sua definição de Java? 😉

Trackbacks

  1. Twitter Trackbacks for Glossário virtual em Python e Glade – parte I « iCaju [icaju.wordpress.com] on Topsy.com
  2. Material do Minicurso de Python « iCaju
  3. Glossário virtual em Python e Glade – parte II « iCaju

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: