목차
728x90
    
    
  1. 파일 포인터(File Pointer)란?
파이썬에서 파일을 다룰 때 내부적으로 파일 포인터(file pointer)가 현재 읽기/쓰기 작업이 이뤄지는 위치를 가리킨다.
파일을 열면 포인터는 항상 파일의 처음(0 바이트 위치)을 가리키고, 파일을 읽거나 쓰면서 이 포인터는 앞으로 이동한다.
1-1. 파일 포인터 확인: tell()
with open("example.txt", "r") as f:
    print(f.tell())  # 현재 위치 확인
    f.read(5)
    print(f.tell())  # 5바이트 읽은 후 위치
tell() 메서드를 통해 현재 파일 포인터의 위치(바이트 단위)를 확인할 수 있음.
1-2. 파일 포인터 이동: seek(offset, whence)
with open("example.txt", "r") as f:
    f.seek(0)  # 처음으로 이동
    print(f.read(5))
    
    f.seek(0, 2)  # 파일 끝으로 이동
    print(f.tell())
seek()은 파일 포인터를 원하는 위치로 이동시켜주는 함수.
- offset: 이동할 바이트 수
 - whence: 기준 위치 (기본값은 0)
 
| whence 값 | 의미 | 
|---|---|
0 | 
파일의 시작 (기본값) | 
1 | 
현재 위치 | 
2 | 
파일의 끝 | 
1-3. 파일 포인터 정리
tell()→ 현재 파일 포인터 위치 확인seek()→ 파일 포인터 위치 이동- 파일을 
read()나readline()으로 읽으면 자동으로 포인터는 앞으로 이동 
다음으로 파이썬에서 파일을 읽을 때 사용하는 함수 3가지에 대해 알아보고자 한다.
2. read()
파일 전체 내용을 한 번에 문자열로 읽는다. 파일 크기가 작거나, 한 번에 전체 내용을 처리해야 할 때 사용한다.
- 리턴값: 
str - 파일 포인터는 끝으로 이동함
 
with open("example.txt", "r") as f:
    content = f.read()
    print(content)
주의: 큰 파일은 메모리를 많이 사용할 수 있다.
3. readline()
파일에서 한 줄씩 읽는다. 반복문과 함께 사용하면 편함.
- 리턴값: 
str(줄바꿈 문자 포함) - 더 이상 읽을 줄이 없으면 빈 문자열 반환
 
with open("example.txt", "r") as f:
    while True:
        line = f.readline()
        if not line:
            break
        print(line.strip())
줄바꿈 문자 (\n)가 포함되어 있으니 출력할 땐 strip()을 자주 쓴다.
4. readlines()
파일 전체를 줄 단위로 읽어서 리스트로 반환한다.
readlines(n) 인자를 통해, 줄 단위로 읽되 최대 n 바이트 만큼의 크기를 제한한다.
- 리턴값: 
list[str] - 파일의 각 줄이 리스트의 요소가 됨
 
with open("example.txt", "r") as f:
    lines = f.readlines()
    for line in lines:
        print(line.strip())
주의: readlines()도 한 번에 메모리에 올리기 때문에 큰 파일에는 적절하지 않다.
5. 요약
| 함수 | 설명 | 리턴 타입 | 특징 | 
|---|---|---|---|
read() | 
전체 내용을 한 번에 읽음 | str | 
소형 파일에 적합 | 
readline() | 
한 줄씩 읽음 | str | 
루프와 함께 사용 | 
readlines() | 
전체 줄을 리스트로 읽음 | list[str] | 
간단한 줄 처리 | 
seek(n) | 
파일 포인터를 n 위치로 이동 | - | 다시 읽을 때 사용 | 
'Development > Python' 카테고리의 다른 글
| [python] isinstance()와 issubclass()의 차이점 (0) | 2025.05.22 | 
|---|---|
| [python] OS 모듈에 대하여. (0) | 2025.05.19 | 
| [python] Standard Stream , Diagnosing stream problems (0) | 2025.05.19 | 
| [python] 파이썬에서 운영체제에 따른 파일 경로 및 개행 처리 (0) | 2025.05.18 | 
| [python] 클로저(Closure) (0) | 2025.05.17 |