28 de outubro de 2008

Exemplo 3 - Ler arquivo CSV e mostrar

fones02.py - Lê um arquivo delimitado por ponto-e-vírgula e mostra os campos na tela.

Esse exemplo junta os exemplos 1 e 2, usando o pacote csv do Python conforme a orientação do Adam Brandizzi, no exemplo 2.

""" Le um arquivo delimitado e mostra os campos na tela. """
import csv

print __doc__
f = csv.reader(open('fones.txt'), delimiter=';')
for [nome,nasc,fone] in f:
print 'nome=%s | nasc=%s | fone=%s' % (nome,nasc,fone)

print f.line_num, 'linhas lidas'
print '--- fim'


Vamos analisar o programa:
  • Linha 2: importa o pacote csv necessário. Visite o link e veja alguns exemplos.
  • Linha 4: veja a docstring. (Use-a sempre!).
  • Linha 5: usa o método csv.reader(), dizendo que o arquivo é delimitado por ponto-e-vírgula.
  • Linha 6: (o pulo do gato!) a iteração no retorno do csv.reader() retorna sempre uma lista. Portanto, eu disse ao iterator que queria jogar o resultado nas variáveis nome, nasc e fone.
  • Linha 7: mostrando o conteúdo formatado.
  • Linha 9: veja que temos um contador automático! :-D
Esse jeito fica melhor e mais direto que o exemplo 2.
Esse exemplo usa o mesmo arquivo de dados do exemplo 1. Portanto, o conteúdo do campo nome terá brancos à direita. Se você estiver aprendendo Python como eu, tente alterar esse programa para mostrá-lo sem os brancos à direita, ok? ;-)
Tenta aí e conte como você fez.

Contribua se você tem alguma informação adicional sobre esse assunto ou se encontrou um erro nesse programa. Afinal, ninguém é perfeito, né?
Comente também se esse exemplo ajudou a você de alguma forma. É gratificante saber. :-)
Não deixe de avisar se você encontrou alguma falha de iniciante que precisa corrigir ou melhorar, pois estou aprendendo. Isso ajuda bastante.

Abraço.

2 comentários:

  1. Coloquei o link do seu blog na seção de links do vivaotux (meu blog).
    http://vivaotux.blogspot.com

    Há, suas dicas estão sendo devidamente anotadas, valeu pelo excelente trabalho.

    ResponderExcluir
  2. Ô Sérgio, que bom que o blog está ajudando de alguma forma. :-)

    Eu também tô aproveitando prá caramba os materiais que tenho linkado.

    Abraço.
    Vinicius Assef.

    ResponderExcluir