Python에서 파일을 다룰 때 현재 읽기·쓰기 위치를 확인하거나 원하는 위치로 이동해야 하는 경우가 자주 있습니다. 이때 사용하는 것이 바로 tell() 메서드와 seek() 메서드입니다.
tell() 메서드 – 현재 파일 위치 확인
tell() 메서드는 파일 내에서 현재 위치(파일 포인터의 위치)를 알려줍니다. 즉, 다음에 수행될 읽기 또는 쓰기 작업이 파일 시작점으로부터 몇 바이트 떨어진 곳에서 일어나는지를 반환합니다.
seek(offset[, from]) 메서드 – 파일 위치 변경
seek(offset[, from]) 메서드는 현재 파일 위치를 변경합니다.
- offset: 이동할 바이트 수를 나타냅니다.
- from: 기준이 되는 참조 위치를 지정합니다.
from 인수에 설정할 수 있는 값은 다음과 같습니다.
- 0: 파일의 시작 부분을 기준 위치로 사용합니다.
- 1: 현재 위치를 기준 위치로 사용합니다.
- 2: 파일의 끝 부분을 기준 위치로 사용합니다.
예제 코드
앞서 생성한 foo.txt 파일을 예제로 살펴보겠습니다.
#!/usr/bin/python3
# 파일 열기
fo = open("foo.txt", "r+")
str = fo.read(10)
print("읽은 문자열 : ", str)
# 현재 위치 확인
position = fo.tell()
print("현재 파일 위치 : ", position)
# 포인터를 다시 파일 처음으로 이동
position = fo.seek(0, 0)
str = fo.read(10)
print("다시 읽은 문자열 : ", str)
# 열었던 파일 닫기
fo.close()실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
읽은 문자열 : Python is 현재 파일 위치 : 10 다시 읽은 문자열 : Python is
정리
tell()로 현재 파일 포인터의 위치를 확인하고, seek()로 원하는 위치로 자유롭게 이동시킬 수 있습니다. 두 메서드를 함께 활용하면 대용량 파일에서 특정 지점만 반복해서 읽거나, 파일 끝부분부터 데이터를 처리하는 등 유연한 파일 입출력 작업이 가능합니다.