Python é uma linguagem open-source, com uma extensa biblioteca. E os módulos da biblioteca são escritos em Python. Alguns módulos, como pickle e StringIO, tem versões em C mais rápidas (cPickle e cStringIO) mas as versões em Python são mantidas para que você possa ler os fontes. Veja como descobrir onde estão os fontes de…
Há muitas situações em que uma função faz cálculos e operações para obter valores e, ao final, deve montar uma string com esses valores. Nesta situação, muita gente monta um dicionário com os valores e usa string formatting para gerar a string a ser retornada. Por exemplo: # -*- encoding: utf-8 -*- import string,random template=”’Sugestões…
A dica de hoje não é muito útil. Pelo menos eu nunca usei para nada realmente sério. Mas é bem divertida: >>> t=’All your base are belong to us.’ >>> t.encode(‘rot-13’) ‘Nyy lbhe onfr ner orybat gb hf.’ Rot-13 é um encoding comum do Python. Você pode escrever código em rot-13 também, se indicar o…
O pacote cclive, para download de vídeos do YouTube na linha de comando, é uma reescrita do clive mais eficiente, com menor consumo de memória e menos dependências. Para instalar: $ sudo apt-get install cclive E para usar: $ cclive http://www.youtube.com/watch?v=8fvTxv46ano Isso vai baixar o vídeo na pasta atual. Simples e indolor. Mas qual a…
Essa é bem legal. Temos três listas: >>> a=[1,2,3] >>> b=[4,5,6] >>> c=[‘a’,’b’,’c’] Veja: >>> zip(a,b,c) [(1, 4, ‘a’), (2, 5, ‘b’), (3, 6, ‘c’)] Simples e útil, não? E se as listas tiverem tamanhos diferentes? >>> c=[‘a’,’b’] >>> zip(a,b,c) [(1, 4, ‘a’), (2, 5, ‘b’)] O resultado será truncado para o tamanho da menor…
Python tem duas funções muito interessantes: any e all. A função any recebe uma lista (ou outro objeto interável) e retorna True se algum dos elementos for avaliado como True. Já all só retorna True se todos os elementos forem avaliados como True. Veja: >>> everybody=[1,2,3,4] >>> anybody=[0,1,0,2] >>> nobody=[0,0,0,0] >>> any(everybody) True >>> any(nobody)…
O módulo gzip nos permite ler e escrever em arquivos .gz sem nenhum trabalho. Veja: >>> import gzip >>> f=gzip.open(‘teste.txt.gz’,’w’) >>> f.write(‘Hello!\n’) 7 >>> f.close() >>> $ gunzip teste.txt.gz $ cat teste.txt Hello! $ gzip teste.txt $ python Python 2.7.3 (default, Apr 20 2012, 22:39:59) [GCC 4.6.3] on linux2 Type “help”, “copyright”, “credits” or “license”…
A partir do Python 2.5, ao estender dicionários, você pode dar a suas classes um método __missing_, que será executado toda vez que você tentar acessar um índice inexistente. Veja: class Counter(dict): def __missing__(self, key): self[key]=0 return self[key] Veja funcionando: >>> votos=[‘john’,’paul’,’john’,’john’,’ringo’, … ‘george’,’paul’,’ringo’,’ringo’,’john’, … ‘paul’,’john’,’george’,’paul’,’paul’, … ‘john’,’paul’,’john’,’ringo’,’paul’] >>> c=Counter() >>> for v in votos:…
Gosto bastante de alguns videopodcasts, como o Roda e Avisa e o Man in the Arena. Mas o tempo que tenho para ouví-los é quando estou dirigindo. Nesse momento, o fato de serem em vídeo não significam nada. Tê-los em MP3 é muito mais prático para mim, que assim consigo ouví-los no som do carro.…
Sem maiores explicações, acesse. Baixe o script.
A maioria dos blogs sobre Ubuntu ou sobre Linux é escrita por hackers para hackers. O Ubuntu Dicas não. É sobre Ubuntu, e útil para qualquer um que use o sistema, não importa seu nível de conhecimento técnico. São excelentes dicas de programas, dicas de uso do sistema e notícias sobre o Ubuntu. Recomendo.
A maioria dos programadores Python gasta bastante tempo no shell interativo. É onde fazemos debugging e testamos novos módulos. É também nossa calculadora (piada interna, quem lê, entenda.) Muitos programadores não conhecem o iPython, uma versão “vitaminada” do shell interativo. No site há versões para download para Windows e em formato de Python-EGG. Para instalá-lo…
Você pode disparar notificações do Gnome a partir de um terminal usando o programa notify-send. No Ubuntu, para instalar, faça: sudo apt-get install notify-osd Feito isso, você pode chamar: notify-send “Hello world” Cada notificação pode ter um título e um texto. Você passa os dois como parâmetros, assim: notify-send “Hello again…” “Here goes the message”…