python 함수 파이썬을 사용하여 텍스트 파일의 총 줄 수를 계산하는 방법




파이썬 줄바꿈 제거 (7)

여기에 생성자 표현식과 함께 sum() 을 사용할 수 있습니다. 생성자 표현식은 파일의 길이까지 [1, 1, ...] 이 될 것입니다. 그런 다음 sum() 하기 위해 sum() 을 호출하여 모두 합산합니다.

with open('text.txt') as myfile:
    count = sum(1 for line in myfile)

빈 줄을 포함시키지 않으려 고 시도한 것으로 보인다. 다음을 수행 할 수 있습니다.

with open('text.txt') as myfile:
    count = sum(1 for line in myfile if line.rstrip('\n'))

예를 들어 내 텍스트 파일이 다음과 같은 경우 :

blue
green
yellow
black

여기에 네 줄이 있고 결과를 4로하고 싶습니다. 어떻게해야합니까?


이 파일은 파일의 no.of 행을 제공합니다.

a=open('filename.txt','r')
l=a.read()
count=l.splitlines()
print(len(count))

짧막 한 농담:

total_line_count = sum(1 for line in open("filename.txt"))

print(total_line_count)

with open ("filename.txt","r") as f 로 사용하는 사람들은 anyname = open("filename.txt","r")

def main():

    file = open("infile.txt",'r')
    count = 0
    for line in file:
            count+=1

    print (count)

main ()

count=0
with open ('filename.txt','rb') as f:
    for line in f:
        count+=1

print count

이 링크는 ( 파이썬에서 저렴하게 라인 수를 얻는 방법 ) 많은 잠재적 인 솔루션을 가지고 있지만, 버퍼를 사용하지 않고 (raw) 인터페이스를 사용하고, bytearrays를 사용하고, 자체 버퍼링을 수행하여이 작업을 상당히 빠르게 수행하는 한 가지 방법을 무시합니다. .

수정 된 버전의 타이밍 도구를 사용하여 제공되는 솔루션보다 다음 코드가 더 빠르다고 생각합니다.

def _make_gen(reader):
    b = reader(1024 * 1024)
    while b:
        yield b
        b = reader(1024*1024)

def rawpycount(filename):
    f = open(filename, 'rb')
    f_gen = _make_gen(f.raw.read)
    return sum( buf.count(b'\n') for buf in f_gen )

나의 타이밍은 여기있다 :

rawpycount        0.0048  0.0046   1.00
bufcount          0.0074  0.0066   1.43
wccount             0.01    0.01   2.17
itercount          0.014   0.014   3.04
opcount            0.021    0.02   4.43
kylecount          0.023   0.021   4.58
simplecount        0.022   0.022   4.81
mapcount           0.038   0.032   6.82

나는 거기에 게시 할 것이지만, 나는 교환을 쌓기에 상대적으로 새로운 사용자이고 필수 만나는 필요가 없다.

편집하다:

itertools를 사용하여 인라인으로 생성자 표현식을 사용하여 완전히 수행 할 수 있지만 매우 이상하게 보입니다.

from itertools import (takewhile,repeat)

def rawbigcount(filename):
    f = open(filename, 'rb')
    bufgen = takewhile(lambda x: x, (f.raw.read(1024*1024) for _ in repeat(None)))
    return sum( buf.count(b'\n') for buf in bufgen if buf )

생성자 표현식에 sum() 을 사용할 수 있습니다.

with open('data.txt') as f:
    print sum(1 for _ in f)

f반복자 이므로 len(f) 사용할 수 없습니다. _ 는 일회용 변수의 특수 변수 이름입니다 . Python의 밑줄 "_"변수의 목적무엇입니까?를 참조하십시오 . .

len(f.readlines()) 사용할 수는 있지만 메모리에 추가 목록이 생성되어 메모리에 들어 가지 않는 거대한 파일에는 작동하지 않습니다.





sum