포스트

Python에서 대용량 파일의 라인 수 구하기

개요

파이썬에서 대용량 파일의 라인 수를 구하는 방법에 대해 알아보겠습니다. 이를 위해 여러 방법을 비교하여 가장 효율적인 방법을 살펴보겠습니다.

단순한 방법: for 루프 사용하기

가장 기본적인 방법은 파일을 열어 각 라인을 읽으며 라인 수를 셉니다.

1
2
3
4
with open("large_file.txt", "r") as f:
    line_count = 0
    for line in f:
        line_count += 1

이 방법은 단순하고 이해하기 쉽지만, 파일 크기가 매우 클 경우 느릴 수 있습니다.

빠른 방법: 메모리 매핑 이용

메모리 매핑(memory mapping)이란 파일을 RAM에 올려 빠르게 접근할 수 있도록 하는 기술입니다.

1
2
3
4
5
6
7
import mmap

with open("large_file.txt", "r") as f:
    mmapped_file = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
    line_count = 0
    while mmapped_file.readline():
        line_count += 1

이 방법은 파일을 한 번에 메모리에 올리므로 더 빠르게 라인 수를 셀 수 있습니다.

가장 빠른 방법: subprocess 사용하기

subprocess 모듈을 이용하면 운영 체제의 기능을 사용하여 더 빠르게 라인 수를 구할 수 있습니다.

1
2
3
4
5
6
import subprocess

def get_line_count(filename):
    return int(subprocess.check_output(["wc", "-l", filename]).split()[0])

line_count = get_line_count("large_file.txt")

이 방법은 wc라는 유닉스 명령어를 사용하여 라인 수를 셉니다. 이 명령어는 특히 큰 파일에서 매우 빠릅니다.

결론

파이썬에서 대용량 파일의 라인 수를 구하는 방법은 다양합니다. 가장 적합한 방법은 파일의 크기와 필요한 처리 속도에 따라 달라집니다. 상황에 따라 가장 효율적인 방법을 선택하는 것이 중요합니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.