Topic 2: 파일에 쓰기 ✍️
🎯 학습 목표
파이썬으로 파일에 데이터를 저장하는 방법을 배워요!
- 새 파일 만들고 쓰기
- 기존 파일에 내용 추가하기
- 여러 줄 한 번에 쓰기
📝 파일 쓰기 모드
파일을 열 때 사용하는 모드들이에요:
모드 | 설명 | 주의사항 |
---|---|---|
'w' | Write (쓰기) | 기존 내용을 지우고 새로 씀 |
'a' | Append (추가) | 기존 내용 뒤에 추가 |
'x' | Exclusive (배타적) | 새 파일만 생성 (파일이 있으면 에러) |
✏️ 파일에 쓰기
1. 새 파일 만들기
# 새 파일을 만들고 내용 쓰기
with open("my_first_file.txt", "w", encoding="utf-8") as file:
file.write("안녕하세요! 파이썬으로 만든 첫 파일이에요.\n")
file.write("파일 쓰기는 정말 쉬워요!")
print("파일이 생성되었어요!")
⚠️ 주의: 'w'
모드는 기존 파일이 있으면 내용을 모두 지워요!
2. 여러 줄 한 번에 쓰기
# 일기 쓰기
diary_entries = [
"2024년 1월 1일\n",
"오늘 파이썬 공부를 시작했다.\n",
"파일 다루기를 배웠는데 정말 재미있다!\n",
"내일은 더 많은 것을 배우고 싶다.\n"
]
with open("diary.txt", "w", encoding="utf-8") as file:
file.writelines(diary_entries)
3. 기존 파일에 추가하기
# 기존 파일 끝에 내용 추가
with open("diary.txt", "a", encoding="utf-8") as file:
file.write("\n2024년 1월 2일\n")
file.write("오늘은 파일에 내용을 추가하는 방법을 배웠다!\n")
🎯 실용적인 예제
할 일 목록 관리
def add_todo(task):
"""할 일을 파일에 추가하는 함수"""
with open("todo_list.txt", "a", encoding="utf-8") as file:
file.write(f"□ {task}\n")
print(f"'{task}' 항목이 추가되었어요!")
def show_todos():
"""할 일 목록을 보여주는 함수"""
try:
with open("todo_list.txt", "r", encoding="utf-8") as file:
print("\n📋 할 일 목록:")
print(file.read())
except FileNotFoundError:
print("아직 할 일이 없어요!")
# 사용 예시
add_todo("파이썬 공부하기")
add_todo("운동하기")
add_todo("책 읽기")
show_todos()
성적표 만들기
def create_report_card(student_name, scores):
"""성적표를 파일로 만드는 함수"""
filename = f"{student_name}_성적표.txt"
with open(filename, "w", encoding="utf-8") as file:
file.write("="*30 + "\n")
file.write(f" {student_name} 성적표\n")
file.write("="*30 + "\n\n")
total = 0
for subject, score in scores.items():
file.write(f"{subject}: {score}점\n")
total += score
average = total / len(scores)
file.write(f"\n평균 점수: {average:.1f}점\n")
file.write("="*30 + "\n")
print(f"{filename}이 생성되었어요!")
# 사용 예시
scores = {
"국어": 85,
"수학": 92,
"영어": 88,
"과학": 90
}
create_report_card("김철수", scores)
🔒 안전하게 파일 쓰기
백업 만들기
import os
def safe_write(filename, content):
"""기존 파일을 백업하고 새로 쓰는 함수"""
# 파일이 존재하면 백업
if os.path.exists(filename):
backup_name = filename + ".backup"
with open(filename, "r", encoding="utf-8") as original:
with open(backup_name, "w", encoding="utf-8") as backup:
backup.write(original.read())
print(f"백업 파일 생성: {backup_name}")
# 새 내용 쓰기
with open(filename, "w", encoding="utf-8") as file:
file.write(content)
print(f"{filename}에 저장 완료!")
# 사용 예시
safe_write("important.txt", "중요한 데이터입니다.")
💡 print()를 파일로!
# print() 출력을 파일로 저장하기
with open("output.txt", "w", encoding="utf-8") as file:
print("이 내용은 파일에 저장돼요!", file=file)
print("print()도 파일에 쓸 수 있어요!", file=file)
for i in range(1, 6):
print(f"{i}번째 줄", file=file)
💡 퀴즈: 파일 쓰기 이해도 체크
Q1. ‘w’ 모드와 ‘a’ 모드의 차이는?
💡 정답 확인
정답:
'w'
(write): 파일의 기존 내용을 모두 지우고 새로 씀'a'
(append): 파일의 기존 내용을 유지하고 끝에 추가
예시:
# 'w' 모드 - 기존 내용 삭제
with open("test.txt", "w") as f:
f.write("새로운 내용") # 기존 내용은 사라짐
# 'a' 모드 - 기존 내용에 추가
with open("test.txt", "a") as f:
f.write("추가 내용") # 기존 내용 뒤에 추가됨
Q2. 다음 코드의 결과는?
with open("numbers.txt", "w") as file:
for i in range(1, 4):
file.write(str(i))
- 각 숫자가 새 줄에 출력
- “123”이 한 줄에 출력
- 에러 발생
- 파일이 생성되지 않음
💡 정답 확인
정답: 2번
file.write()
는 자동으로 줄바꿈을 추가하지 않아요!
줄바꿈을 원한다면 \n
을 추가해야 해요:
with open("numbers.txt", "w") as file:
for i in range(1, 4):
file.write(str(i) + "\n") # 줄바꿈 추가
✅ 파일 쓰기 마스터 체크리스트
✅ 파일 쓰기 마스터 체크리스트
🚀 다음 단계
텍스트 파일 읽고 쓰기를 배웠어요! 이제 엑셀처럼 데이터를 다룰 수 있는 CSV 파일을 배워볼게요!
Last updated on