제13장: 파일 다루기
Chapter 13: 파일 다루기의 기초 – 파이썬 파일 입출력
프로그램이 컴퓨터와 실질적으로 소통하는 순간은 파일을 읽거나 쓰는 순간입니다. 데이터를 메모리에 잠깐 저장하는 것을 넘어, 파일에 보관하면 언제든 다시 꺼내 쓸 수 있죠. 이 장에서는 파이썬이 어떻게 파일과 대화하는지, 그 핵심 원리를 차근차근 살펴봅니다.
파일 열기와 닫기: 첫걸음
파이썬은 open()
함수를 통해 파일문을 엽니다. 파일 이름(경로)과 어떻게 다룰지 정하는 모드(읽기, 쓰기 등)를 함께 알려주면 됩니다. 파일을 읽고 쓸 때마다 꼭 닫아 주는 것이 좋은 습관입니다. 직접 닫지 않아도, with 구문을 쓰면 자동 정리가 가능합니다.
data_file = open('data.txt', 'r') # 읽기 모드로 파일 열기
# ...파일 작업...
data_file.close()
혹은 이렇게 더 안전하게 활용할 수도 있습니다:
with open('data.txt', 'w') as f:
f.write('파이썬 파일 입출력 연습')
# with 블록을 빠져나가면 파일이 자동으로 닫힘
다양한 파일모드: 읽기, 쓰기, 추가하기
open()
함수의 두 번째 인자는 그 파일을 어떻게 다룰지 결정합니다.
'r'
: 읽기 모드(파일이 있어야 함)'w'
: 쓰기 모드(기존 내용은 삭제, 없으면 새로 만듦)'a'
: 이어쓰기 모드(기존 끝에 추가)'b'
: 바이너리 모드(이미지 등 비텍스트 파일용)
파일에 데이터 써 보기
파일에 글을 남길 때는 write()
를 사용합니다.
with open('hello.txt', 'w', encoding='utf-8') as f:
f.write('안녕하세요!\n')
f.write('파일에 텍스트를 남깁니다.')
문장이 끝날 때마다 줄바꿈 \n
을 꼭 넣어주어야 실제로 다음 줄로 내려갑니다.
파일에서 데이터 읽기
파일 내용을 읽어오는 방법은 여러 가지입니다. 전체를 한 번에 읽으려면 read()
, 한 줄씩 읽으려면 readline()
, 모든 줄을 리스트로 만들고 싶다면 readlines()
를 씁니다.
with open('hello.txt', 'r', encoding='utf-8') as f:
all_text = f.read()
print(all_text)
with open('hello.txt', 'r', encoding='utf-8') as f:
for line in f: # 파일 객체 자체가 반복 가능
print(line.strip()) # 줄바꿈 문자 제거
실습: 원하는 단어 찾기
텍스트 파일에서 특정 단어가 들어있는 줄을 찾아볼 수도 있습니다. 다음은 실전 예시입니다.
with open('hello.txt', 'r', encoding='utf-8') as f:
for num, line in enumerate(f, 1):
if '파이썬' in line:
print(f"{num}줄: {line.strip()}")
파일 작업 시 주의할 점
경로를 잘못 적으면 파일을 못 찾거나 예상치 못한 위치에 파일이 생성될 수 있습니다. 한글이나 특수문자가 있는 파일의 경우, 인코딩을 utf-8
로 명시하는 것도 잊지 마세요. 만일 파일이 없는 경우나 권한이 없는 상황 등에서는 오류가 생길 수 있으니, try-except로 미리 대비해두면 프로그램이 멈추지 않게 설계할 수 있습니다.
파이썬 파일 입출력은 실제 프로젝트에서 반드시 쓰이는 필수 능력입니다. 읽기, 쓰기, 다양한 모드와 에러 처리까지 하나씩 익히면서 자신만의 데이터 저장 세계를 넓혀보세요.


