Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Número de linha dos arquivos de texto

Oi pessoal, bem legal estes recursos de IO do python, isto me deu umas idéias!

Com relação ao número de linhas do arquivo eu fiz uma função que devolve isso

# -*- coding:UTF-8 -*-

from __future__ import unicode_literals

def obter_n_linhas (nomeDoArquivo):

    arquivo = open(nomeDoArquivo, "r");
    linhaUnica = "";
    linhas = [];

    for linha in arquivo:
        linhaUnica += linha + "#lin#";

    arquivo.close();
    linhas = linhaUnica.split("#lin#");
    nLinhas = len(linhas) - 1;

    return nLinhas;

Infelizmente a função buga com textos com acentuação. Será que o python não tem uma função de "forma" para que eu possa fazer isso?

2 respostas

Olá Bruno,

este é um jeito mais "pythonico" de fazer isso:

def line_count(fname):
    with open(fname) as f:
        i = 0
        for line in f:
            i += 1
    return i

Outra alternativa, mais "pythonica" ainda:

def line_count(fname):
    return sum(1 for line in open(fname))
solução!

Oi Bruno,

O jeito mais simples que eu consigo pensar para fazer isso é o seguinte:

def obter_n_linhas (nomeDoArquivo):
    arquivo = open(nomeDoArquivo, "r")
    n_linhas = sum(1 for linha in arquivo)
    arquivo.close()
    return n_linhas

A função sum devolve a soma dos elementos de uma lista, que eu estou criando com a sintaxe 1 for linha in arquivo. Basicamente ele cria uma lista com o elemento 1 para cada linha no arquivo.