파일 입출력 기초
파일 입출력 기초: “저장해두고, 다음에 불러오기”부터 해보자!
3-3. 문자열 다루기에서 “글자”를 가지고 놀아봤다면, 이제 3-4에서는 파일이라는 ‘바깥 공간’에 데이터를 저장하고 다시 읽는 걸 해볼 거예요. 솔직히 말하면, 프로그램을 만들다 보면 결국 “다음 실행 때도 기억해야 하잖아?” 그 순간 파일이 필요하더라구요.
오늘은 딱 기초만! 열기 → 읽기 → 쓰기 흐름을 잡는 게 목표입니다.
준비물: 파이썬 파일 입출력 기본 개념
파일 입출력은 크게 이렇게 생각하면 편해요.
- 열기(open): 파일을 “작업 모드”로 꺼내서 사용 준비
- 읽기(read): 파일 내용 가져오기
- 쓰기(write): 파일에 내용 남기기
- 닫기(close): 작업 끝. (요즘은 자동으로 처리되게 잘 짜면 됨)
그리고 파이썬에선 보통 with를 쓰면 실수 확 줄어들어요. 나름 안전장치 같은 느낌!
1) 파일 읽기: 내용 가져오기
예를 들어 sample.txt라는 파일이 있다고 해볼게요.
먼저 “텍스트 파일을 읽어서 출력”해보기.
file_path = "sample.txt"
with open(file_path, "r", encoding="utf-8") as f:
text = f.read()
print(text)
여기서 핵심만 짚으면:
"r": read(읽기) 모드encoding="utf-8": 한글 깨지는 거 방지용with ... as f: 파일 핸들(f)을 안전하게 사용
아! 혹시 내가 예전에 한글 파일 읽다가 “왜 글자가 □□□로 나오지?” 했던 기억 있어요… 음… 사실은 거기서 많이 당했죠. 인코딩 안 맞으면 진짜 멘탈 깨져요. (유머로 넘기기엔 아픈 포인트)
2) 파일 읽기 한 줄씩: for로 편하게
read()는 전체를 통째로 가져오는데, 가끔은 줄 단위로 다루는 게 편할 때가 있어요.
file_path = "sample.txt"
with open(file_path, "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
line은 한 줄씩 들어와요strip()은 줄 끝의\n같은 거 제거해주는 친구
“그냥 전체를 다 읽자”가 항상 정답은 아니고, 데이터가 크면 줄 단위가 훨씬 낫더라구요.
3) 파일 쓰기: 저장해두기
이번엔 반대로 파일에 내용을 남겨볼게요. 예를 들어 output.txt에 써봅니다.
output_path = "output.txt"
with open(output_path, "w", encoding="utf-8") as f:
f.write("안녕하세요!\n")
f.write("파일에 저장되는 중이에요.\n")
여기서 "w"는 write(쓰기) 모드예요.
주의할 점 하나…!
"w"모드는 기존 파일이 있으면 내용을 지워버릴 수도 있어요.- 그래서 실수로 기존 데이터를 날려버리면… 그때는 내가 너무 성급했었던 거예요. 솔직히 말하면 나도 몇 번 그랬고요 😇
4) 기존 파일에 이어서 쓰기: "a" 모드
기존 내용을 유지하면서 뒤에 이어 붙이고 싶으면 "a"를 써요.
output_path = "output.txt"
with open(output_path, "a", encoding="utf-8") as f:
f.write("그리고 이 줄은 이어서 추가돼요.\n")
이건 진짜 실전에서 자주 써요. 로그 남길 때도 보통 "a"로 시작하거든요.
5) 작은 실습: 문자열을 파일로 저장하고, 다시 읽기
자, 여기서 바로 “아, 이거 되네?” 느낌 오게 한 번 해봅시다.
(3-3에서 했던 문자열 감각도 그대로 써요!)
5-1) 입력을 받아 파일로 저장하기
name = input("이름을 입력하세요: ")
output_path = "profile.txt"
with open(output_path, "w", encoding="utf-8") as f:
f.write(f"이름: {name}\n")
5-2) 저장한 파일 다시 읽어서 보여주기
input_path = "profile.txt"
with open(input_path, "r", encoding="utf-8") as f:
content = f.read()
print("파일 내용:")
print(content)
이렇게 하면 프로그램이 “실행 끝나도 데이터는 남는다”는 걸 바로 체감할 수 있어요.
자주 겪는 실수 3가지 (나만 당한 거 아니지?)
파일 경로를 잘못 적는다
sample.txt를 어디에 두느냐에 따라 경로가 달라져요.- 그래서 저는 보통 “처음엔 같은 폴더에 두고” 시작해요. 나름 편합니다.
인코딩(encoding) 빼먹는다
- 한글이 깨지면 99% 여기서 시작…!
- 그래서 웬만하면
encoding="utf-8"은 습관처럼 넣어두면 좋아요.
쓰기 모드
"w"로 기존 내용을 날린다- 나도 한 번쯤 “어? 왜 파일이 비었지?” 했어요.
- 그럴 땐
"a"생각해보면 됨!
다음 단계 예고: 3-5 데이터 프로젝트 미니 실습
오늘은 파일 입출력의 기본기를 잡았어요.
열고( open ) → 읽고( read ) → 쓰고( write ) 흐름, 그리고 with로 안전하게 다루는 법까지!
그럼 다음 3-5에서는 이걸 한 단계 더 응용해서, 데이터 프로젝트 미니 실습으로 “여러 데이터를 모아서 파일로 저장하고 다시 불러오는” 쪽으로 가볼 예정이에요.
솔직히 말하면, 파일이 들어가는 순간부터 프로그램이 진짜 “세상에 붙는 느낌”이 나거든요.
자, 이제 친구처럼 같이 가보자! 😄





