Skip to Content
💻 코리아IT아카데미 신촌 - 프로그래밍 학습 자료

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))
  1. 각 숫자가 새 줄에 출력
  2. “123”이 한 줄에 출력
  3. 에러 발생
  4. 파일이 생성되지 않음

💡 정답 확인

정답: 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