목차
1. 기억력이 없는 프로그램
간단한 메모 프로그램을 만들었다고 가정해보겠습니다.
memo = "오늘 Python 공부 완료!"
print(memo)실행 결과입니다.
오늘 Python 공부 완료!모든 것이 정상처럼 보입니다. 그런데 프로그램을 종료한 후 다시 실행하면 어떻게 될까요? 아무것도 기억하지 못합니다.
NameError지금까지 배운 변수, List, Dictionary, Tuple, Set은 모두 메모리 RAM에 저장됩니다. RAM은 컴퓨터의 작업 공간이기 때문에 컴퓨터를 끄거나 프로그램이 종료되면 데이터가 사라집니다.
그래서 개발자들은 프로그램에게 기억력을 만들어 주기 시작했습니다. 그 방법이 바로 파일 File 입출력입니다.
2. 파일 입출력이 필요한 이유
사람은 중요한 내용을 노트, 다이어리, 메모장, 엑셀 파일, 문서에 기록합니다. 컴퓨터도 마찬가지입니다.
- txt 파일
- csv 파일
- json 파일
- 데이터베이스
Python에서 파일은 컴퓨터의 노트라고 생각하면 됩니다. 변수는 잠깐 기억하는 공간이고, 파일은 프로그램이 종료된 뒤에도 남는 저장 공간입니다.
3. 첫 번째 파일 만들기
Python에게 메모를 시켜보겠습니다.
file = open("memo.txt", "w")
file.write("오늘 Python 공부 완료!")
file.close()실행 후 프로젝트 폴더를 보면 다음 파일이 생성됩니다.
memo.txt파일 내용입니다.
오늘 Python 공부 완료!Python이 드디어 기억을 하기 시작했습니다. 메모리에만 있던 데이터가 파일로 저장된 것입니다.
4. open()과 파일 모드
파일을 다루기 위해 사용하는 기본 함수는 open()입니다.
open("파일명", "모드")예시는 다음과 같습니다.
open("memo.txt", "w")여기서 w는 Write, 즉 쓰기를 의미합니다.
w파일 모드 총정리
실무에서 자주 사용하는 파일 모드입니다.
| 모드 | 의미 | 사용 상황 |
|---|---|---|
| r | 읽기 Read | 기존 파일 내용을 읽을 때 사용합니다. |
| w | 쓰기 Write | 파일을 새로 쓰거나 기존 내용을 덮어쓸 때 사용합니다. |
| a | 추가 Append | 기존 내용 뒤에 새 내용을 추가할 때 사용합니다. |
| x | 새 파일 생성 | 이미 파일이 있으면 오류를 내고 새 파일만 만들 때 사용합니다. |
| rb | 바이너리 읽기 | 이미지, PDF 같은 바이너리 파일을 읽을 때 사용합니다. |
| wb | 바이너리 쓰기 | 바이너리 파일을 저장할 때 사용합니다. |
입문 단계에서는 r, w, a 세 가지 모드만 정확히 이해해도 충분합니다.
5. 파일 읽기와 내용 추가
파일 읽기
이제 저장한 내용을 읽어보겠습니다.
file = open("memo.txt", "r")
data = file.read()
print(data)
file.close()결과입니다.
오늘 Python 공부 완료!파일에 저장된 내용을 메모리로 불러온 것입니다.
파일에 내용 추가하기
새로운 메모를 기존 파일 뒤에 남겨보겠습니다.
file = open("memo.txt", "a")
file.write("\n내일은 함수 복습")
file.close()결과입니다.
오늘 Python 공부 완료!
내일은 함수 복습a 모드는 기존 내용을 지우지 않고 파일 끝에 새 내용을 추가합니다.
위험한 실수
많은 초보자가 다음 코드를 별생각 없이 사용합니다.
file = open("memo.txt", "w")w 모드는 기존 내용을 모두 삭제하고 새로 씁니다.
기존 파일 내용입니다.
오늘 Python 공부 완료!
내일은 함수 복습새로운 내용을 씁니다.
file.write("새로운 내용")결과입니다.
새로운 내용기존 데이터가 사라집니다. 실무에서도 w 모드 오용은 자주 발생하는 사고입니다.
6. close()와 with open
파일은 열면 반드시 닫아야 합니다.
file.close()파일을 열면 운영체제가 자원을 할당합니다. 닫지 않으면 여러 문제가 발생할 수 있습니다.
- 메모리 낭비
- 파일 잠금
- 데이터 손실
현대적인 방법
실무에서는 with open 방식을 거의 기본으로 사용합니다.
with open("memo.txt", "r") as file:
data = file.read()
print(data)파일을 자동으로 닫아줍니다. 코드가 끝나거나 중간에 오류가 발생해도 파일 자원을 정리하기 쉬워집니다.
7. 여러 줄 처리와 로그 분석
여러 줄 저장하기
학생 명단을 파일에 저장해보겠습니다.
students = [
"Lee",
"Kim",
"Park"
]파일로 저장합니다.
with open("students.txt", "w") as file:
for student in students:
file.write(student + "\n")결과입니다.
Lee
Kim
Park한 줄씩 읽기
with open("students.txt", "r") as file:
for line in file:
print(line.strip())결과입니다.
Lee
Kim
Park이 방식은 실무에서 로그 파일을 읽을 때 매우 자주 사용됩니다.
로그 분석가의 하루
웹 서버 로그가 다음처럼 저장되어 있다고 가정해보겠습니다.
LOGIN SUCCESS
LOGIN FAIL
LOGIN SUCCESS
LOGIN FAILPython으로 한 줄씩 읽습니다.
with open("server.log", "r") as file:
for line in file:
print(line.strip())- 보안 분석
- 장애 분석
- 시스템 운영
8. CSV와 JSON 파일
CSV 파일 다루기
CSV는 엑셀 데이터를 저장할 때 자주 사용하는 형식입니다.
name,age
Lee,30
Kim,25
Park,28Python에서 읽어보겠습니다.
with open("users.csv", "r") as file:
data = file.read()
print(data)CSV는 데이터 분석의 시작점입니다. 엑셀, 데이터베이스, 통계 도구, Python 분석 코드 사이에서 데이터를 주고받을 때 자주 사용합니다.
JSON 파일과의 만남
다음 시리즈에서 더 자세히 배우게 될 JSON은 웹 서비스와 AI 서비스에서 매우 많이 쓰입니다.
{
"name":"Lee",
"age":30
}실제 AI 서비스, 웹 서비스, API 서버 대부분은 JSON 파일이나 JSON 형식의 데이터를 활용합니다. Python은 JSON 파일도 쉽게 저장하고 읽을 수 있습니다.
9. 실전 프로젝트와 AI 시대의 파일
간단한 회원 등록 시스템
사용자에게 이름을 입력받아 파일에 저장하는 간단한 회원 등록 시스템을 만들어보겠습니다.
name = input("이름 입력 : ")파일에 저장합니다.
with open("users.txt", "a") as file:
file.write(name + "\n")실행 예시입니다.
이름 입력 : Lee파일에는 다음처럼 회원 정보가 남습니다.
Lee
Kim
Park프로그램을 종료해도 회원 정보는 계속 남아 있습니다.
AI 시대에도 파일은 중요할까?
놀랍게도 파일은 AI 시대에 더 중요해졌습니다. ChatGPT, Claude, Gemini, Cursor, Copilot 같은 도구도 파일을 읽고 저장하면서 작업합니다.
report.pdf
data.csv
log.txt
train.jsonAI 역시 파일을 통해 학습하고 작업합니다. 데이터셋, 로그, 리포트, 설정 파일은 AI 개발에서 계속 다루게 되는 핵심 자산입니다.
10. 자주 하는 실수와 다음 편 예고
실수 1: 파일 경로 오류
FileNotFoundError파일 위치가 잘못된 경우 발생합니다. 현재 실행 위치와 파일이 실제로 있는 위치를 확인해야 합니다.
실수 2: close() 누락
file = open("memo.txt")파일을 열고 닫지 않는 실수입니다. 실무에서는 with 문을 사용하는 습관을 들이는 것이 좋습니다.
실수 3: 인코딩 문제
한글 저장이나 읽기에서 다음 오류가 발생할 수 있습니다.
UnicodeDecodeError해결 방법은 파일을 열 때 인코딩을 명시하는 것입니다.
with open(
"memo.txt",
"r",
encoding="utf-8"
) as file:Python 개발자의 성장 단계
name = "Lee"처럼 변수에 저장하지만 프로그램이 종료되면 데이터가 사라집니다.
with open(...)으로 파일에 저장해 프로그램 종료 후에도 데이터를 남깁니다.
MySQL, PostgreSQL, MongoDB 같은 데이터베이스에 데이터를 저장하고 운영합니다.
name = "Lee"with open(...)MySQL
PostgreSQL
MongoDB사실 데이터베이스도 결국은 파일 저장 기술의 발전형입니다.
변수는 화이트보드이고, 파일은 영구 보관 문서함입니다. 화이트보드는 지울 수 있지만 문서함은 수년이 지나도 남아 있습니다.
지금까지 배운 변수, 조건문, 반복문, 함수, List, Dictionary, Tuple, Set은 모두 메모리 안에서만 동작했습니다. 하지만 파일 입출력을 배우는 순간 Python은 처음으로 현실 세계와 연결됩니다.
- 데이터를 저장합니다.
- 데이터를 읽습니다.
- 데이터를 분석합니다.
- 데이터를 관리합니다.
- 여기서부터 진짜 프로그래밍이 시작됩니다.
- 예외 처리 Exception 이해하기
- 오류가 발생해도 프로그램이 안전하게 동작하는 방법
- 실무 개발자와 초보 개발자의 차이가 드러나는 주제
