기술과 산업/언어 및 프레임워크
Python 마스터 시리즈 10화 – 파일 입출력(IO)과 경로 처리의 실전 패턴
B컷개발자
2025. 5. 15. 19:20
728x90
파이썬의 파일 입출력(IO) 기능은 데이터 저장, 로그 기록, 설정 파일 읽기 등 다양한 개발 업무에서 필수적으로 사용된다. 이번 글에서는 파일 open, read, write 기본 구조는 물론, 파일 입출력 시 자주 발생하는 예외 처리, 경로 관리, 대용량 파일 처리 패턴까지 심층 분석한다.
1. 도입 – 파일 입출력은 데이터 중심 시스템의 핵심
파일 입출력은 대부분의 프로그램이 반드시 거쳐야 하는 기능이다.
초기에는 단순 텍스트 파일 처리로 시작하지만,
실제 현업에서는 경로 문제, 인코딩 오류, 대용량 데이터 처리 등 다양한 문제가 복합적으로 발생한다.
파이썬은 상대적으로 간결하고 직관적인 파일 처리 기능을 제공하지만,
안정성과 확장성을 고려한 설계 관점에서 접근하는 것이 중요하다.
2. 본문 – 파일 입출력과 경로 처리의 핵심
2.1 파일 열기와 읽기
file = open('example.txt', 'r')
content = file.read()
file.close()
- 'r' : 읽기 모드
- 파일 사용 후 반드시 close()를 호출해야 한다
2.2 with 문을 이용한 안전한 파일 처리
with open('example.txt', 'r') as file:
content = file.read()
- with 문을 사용하면 파일을 자동으로 닫아준다
- 예외 발생 시에도 안전하게 자원이 정리된다
- 실무에서는 반드시 with 문 사용을 권장
2.3 파일 쓰기
with open('output.txt', 'w') as file:
file.write("Hello, world!")
- 'w' : 기존 파일 덮어쓰기
- 'a' : 기존 파일에 이어쓰기(append)
추가 예시:
with open('output.txt', 'a') as file:
file.write("\n추가 내용")
2.4 줄 단위로 파일 읽기
with open('example.txt', 'r') as file:
for line in file:
print(line.strip())
- 대용량 파일을 메모리에 모두 올리지 않고, 한 줄씩 처리할 때 유용
2.5 바이너리 파일 읽고 쓰기
with open('image.jpg', 'rb') as file:
data = file.read()
with open('copy.jpg', 'wb') as file:
file.write(data)
- 'rb', 'wb'는 바이너리 모드로 파일을 읽고 쓴다
2.6 경로 처리 – os 모듈 활용
import os
current_dir = os.getcwd() # 현재 작업 디렉토리
full_path = os.path.join(current_dir, 'data', 'file.txt') # 경로 결합
exists = os.path.exists(full_path) # 파일 존재 여부 확인
- 플랫폼에 관계없이 경로 결합을 안전하게 할 수 있다
2.7 경로 처리 – pathlib 모듈 활용 (Python 3.4+)
from pathlib import Path
path = Path('data/file.txt')
if path.exists():
print(path.resolve())
- 객체 지향 방식으로 경로와 파일 처리를 더 직관적으로 할 수 있다
- 최근 프로젝트에서는 os 대신 pathlib 사용이 증가하는 추세
3. 인사이트 – 파일 처리 시 반드시 고려해야 할 설계 요소
파일 입출력은 매우 단순한 기능 같지만,
대부분의 오류와 장애는 입출력 처리에서 발생한다.
다음은 실무에서 반드시 체크해야 하는 파일 처리 설계 기준이다.
고려 사항설명
| 파일 존재 여부 사전 확인 | os.path.exists() 또는 Path.exists() 활용 |
| 인코딩 명시 | 텍스트 파일은 반드시 encoding='utf-8' 사용 |
| 예외 처리 | try-except로 FileNotFoundError, PermissionError 등 대비 |
| 대용량 처리 | 한 번에 읽지 말고 for line in file: 방식으로 처리 |
| 파일 닫기 | with 문을 사용하여 자동으로 닫도록 설계 |
| 플랫폼 독립 경로 처리 | os.path.join() 또는 pathlib 적극 활용 |
이러한 기준을 습관처럼 적용하면,
코드 품질과 시스템 안정성을 동시에 확보할 수 있다.
4. 정리
- 파이썬의 파일 입출력은 직관적이지만, 반드시 with 문을 통한 안전한 자원 관리를 습관화해야 한다
- 파일 입출력 시 인코딩, 예외 처리, 경로 처리, 대용량 데이터 처리까지 종합적으로 고려해야 실무에서 문제를 예방할 수 있다
- 경로 처리는 os 또는 pathlib을 활용해 플랫폼 독립성과 가독성을 모두 확보하는 것이 바람직하다
728x90