728x90
파이썬의 파일 입출력(I/O)은 기본적인 open()
함수 외에도 다양한 고급 기능들을 제공합니다. 특히 바이너리 파일 처리, 인코딩 설정, 버퍼링 제어, 대용량 파일 처리 등에 대한 이해는 실무에서 매우 중요합니다.
● 다양한 인코딩 처리
파일을 읽거나 쓸 때 인코딩을 명시하지 않으면 시스템 기본값이 사용되므로, 명시적으로 encoding
을 지정하는 것이 좋습니다.
with open("data.txt", "r", encoding="utf-8") as f:
content = f.read()
특수 문자나 한글이 포함된 파일은 UTF-8 또는 CP949 등을 상황에 따라 선택해야 합니다.
● 바이너리 파일 처리
이미지나 영상 등의 바이너리 데이터를 처리할 때는 "rb"
, "wb"
모드를 사용합니다.
with open("image.jpg", "rb") as f:
data = f.read()
with open("copy.jpg", "wb") as f:
f.write(data)
● 파일 객체 반복 처리
파일을 줄 단위로 읽을 때는 반복문을 사용하는 것이 메모리 효율에 좋습니다.
with open("large.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
readlines()
대신 반복문을 활용하면 대용량 파일도 문제없이 처리할 수 있습니다.
● seek과 tell로 위치 제어
seek()
은 파일 내 커서 위치를 이동하고, tell()
은 현재 위치를 반환합니다.
f = open("sample.txt", "r")
print(f.tell()) # 현재 위치 출력
f.seek(5) # 5번째 바이트로 이동
print(f.read(3)) # 3바이트 읽기
f.close()
● 파일 버퍼링 제어
open()
함수의 buffering
파라미터로 버퍼 크기를 조절할 수 있습니다. buffering=1
은 라인 버퍼링, 0
은 비버퍼링(바이너리 전용), 그 외 정수는 해당 크기만큼 버퍼링합니다.
f = open("data.txt", "w", buffering=1, encoding="utf-8")
● 마무리
고급 파일 입출력 기법을 익히면 대용량 로그 분석, 파일 백업, 바이너리 조작 등 다양한 작업을 효율적으로 처리할 수 있습니다. 특히 인코딩과 버퍼링은 실전에서 문제가 발생하기 쉬운 영역이므로 정확히 이해하고 사용해야 합니다.
728x90
'프로그래밍언어 > 파이썬[중급]' 카테고리의 다른 글
[파이썬][중급] Chapter42. subprocess로 외부 명령 실행 (0) | 2025.05.24 |
---|---|
[파이썬][중급] Chapter41. 압축 파일 처리 (zipfile, tarfile) (0) | 2025.05.24 |
[파이썬][중급] Chapter39. 파일 경로 처리와 pathlib 모듈 (0) | 2025.05.24 |
[파이썬][중급] Chapter38. 예외 처리 심화와 사용자 정의 예외 (0) | 2025.05.24 |
[파이썬][중급] Chapter37. 정규표현식(re 모듈) 기초 (0) | 2025.05.24 |