quarta-feira, 28 de agosto de 2013

     Olá. No post de hoje vamos falar sobre como ler informações de um arquivo usando Python. Vamos trabalhar em um exemplo que contará a quantidade de linhas, palavras e caracteres presentes em um arquivo.

     No primeiro exemplo, vamos trabalhar a extração de informações utilizando um laço while. Temos:

filename = raw_input('Digite o nome do arquivo: ')
source = file(filename)

numLines = numWords = numChars = 0
line = source.readline()     #para ler a primeira linha do arquivo

while line:    #enquanto houver linhas para leitura, incrementamos nossos contadores
     numChars += len(line)     #len() retorna o tamanho do array ou lista
     numWords += len(line.split())     #vimos que o método split() "quebra" a string separando por " "
     numLines += 1

     #após finalizar a leitura da linha, leia a próxima
     line = source.readline()

print numLines, numWords, numChars
source.close()     #fecha o arquivo aberto

     Agora, temos o mesmo programa escrito com um laço for:

filename = raw_input('Digite o nome do arquivo: ')
source = file(filename)

numLines = numWords = numChars = 0
line = source.readline()     #para ler a primeira linha do arquivo

for line in source:    #enquanto houver linhas para leitura, incrementamos nossos contadores
     numChars += len(line)     #len() retorna o tamanho do array ou lista
     numWords += len(line.split())     #vimos que o método split() "quebra" a string separando por " "
     numLines += 1

print numLines, numWords, numChars
source.close()     #fecha o arquivo aberto

     Utilizando o laço for  ao invés do while, temos um programa mais eficiente, pois não é necessário chamar, a cada linha, o método readline(). Isto porque o aquivo foi armazenado em source e a estrutura do for permite que você "leia" para cada linha em source.

     Podemos deixar nosso programa mais interessante se trabalharmos com o comando Try - Except, que vimos em nosso post Python - Erros e Tratamento de Exceções, para verificar se o arquivo que queremos abrir realmente existe.

     Um abraço e até o próximo post!

0 comentários:

Postar um comentário