Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 열린 파일의 현재 줄 번호를 확인하는 방법

Python에서 파일의 현재 줄 번호 확인하기

Python은 파일 객체에 대해 현재 줄 번호를 직접 알려주는 기능을 기본적으로 제공하지 않습니다. 하지만 래퍼(wrapper) 클래스를 작성하면 손쉽게 구현할 수 있습니다.

래퍼 클래스를 사용한 방법

파일 객체를 감싸는 클래스를 만들고, readline() 메서드가 호출될 때마다 줄 번호를 1씩 증가시키는 방식입니다.

class FileLineWrapper(object):
    def __init__(self, file):
        self.f = file
        self.line = 0

    def close(self):
        return self.f.close()

    def readline(self):
        self.line += 1
        return self.f.readline()

    # 'with' 문에서 사용할 수 있도록 지원
    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.close()

위 클래스는 다음과 같이 사용할 수 있습니다.

f = FileLineWrapper(open("my_file", "r"))
f.readline()
print(f.line)

실행 결과는 다음과 같습니다.

1

__enter____exit__ 메서드를 함께 정의했기 때문에, 이 클래스는 with 문과 함께 사용해 파일이 자동으로 닫히도록 처리할 수도 있습니다.

enumerate()를 활용한 간단한 방법

readline()만 사용하는 경우라면, 내장 함수 enumerate()를 활용해 더 간결하게 줄 번호를 추적할 수 있습니다.

f = open("my_file", "r")
for line_no, line in enumerate(f):
    print(line_no)
f.close()

이 방법은 파일을 한 줄씩 순회하면서 각 줄의 인덱스(0부터 시작)를 함께 얻어옵니다. 줄 번호를 1부터 표시하고 싶다면 enumerate(f, start=1)처럼 start 매개변수를 지정하면 됩니다.

정리

  • Python은 현재 줄 번호를 기본으로 제공하지 않으므로 직접 관리해야 합니다.
  • 랜덤 액세스나 세밀한 제어가 필요하면 래퍼 클래스 방식이 적합합니다.
  • 파일 전체를 순서대로 읽는 경우에는 enumerate()를 사용하는 것이 가장 간단하고 파이썬다운 방법입니다.