파이썬은 여러 분야에서 쓰입니다. 특히 데이터 분석에 강합니다. 왜냐하면 파이썬에는 데이터를 다루기 좋은 도구(라이브러리와 함수)가 이미 준비되어 있고, 문법도 자연스러운 문장처럼 읽히기 때문입니다. 또한 파일 입출력도 쉽게 할 수 있습니다.
- 입력(Input) = 파일에서 데이터를 읽어오기
- 출력(Output) = 파일에 데이터를 저장하기
즉, 프로그램이 “노트”처럼 파일을 열고 → 내용을 읽거나 → 새로운 내용을 쓰는 과정입니다.

1. 파일 열기
파일에 내용을 저장하거나 불러오기 위해서는 먼저 파일을 열어야 합니다.
파이썬에서는 open(파일명, 모드)
함수를 사용하여 파일을 엽니다.
# memo.txt를 읽기 모드로 열겠다는 코드입니다.
file = open("memo.txt", "r")
모드 | 기능 | 설명 |
---|---|---|
r | 읽기(read) 모드 | 파일을 읽기 모드로 엽니다. |
w | 쓰기(write) 모드 | 파일을 쓰기 모드로 엽니다. 기존 파일 내용은 덮여쓰여집니다. |
r | 추가(append) 모드 | 파일을 추가 모드로 엽니다. 기존 파일 내용을 유지한 채 내용을 추가합니다. |
파일을 열 때 발생할 수 있는 오류
- FileNotFoundError: 지정한 경로에 파일이 없을 때 발생 (
open('없는파일.txt', 'r')
) - PermissionError: 읽기 전용 파일이거나 권한이 없는 위치에 쓰려고 할 때 발생 (
open('C:/Windows/system.ini', 'w')
) - IsADirectoryError: 파일이 아니라 폴더 경로를 열려고 할 때 발생 (
open('C:/Users', 'w')
) - ValueError: invalid mode: 모드 문자열이 잘못되었을 때 발생 (
open('test.txt', 'wr')
)
2. 파일 읽기
파이썬에서 읽기 모드(r
)로 파일을 열면, 그 안의 내용을 읽어올 수 있는 메서드들이 있습니다.
파일객체.read()
: 파일 전체 내용을 한 번에 읽음파일객체.readline()
: 파일에서 한 줄만 읽음파일객체.readlines()
: 파일 전체를 읽어서 리스트(줄 단위)로 반위
f = open('memo1.txt', 'r')
all = f.read()
print('read():')
print(all)
f = open('memo1.txt', 'r')
line = f.readline()
print('readline():')
print(line)
f = open('memo1.txt', 'r')
lines = f.readlines()
print('readlines():')
print(lines)
# 파일을 자동으로 닫아주는 문법
with open('memo1.txt', 'r') as f:
all = f.read()
print('read():')
print(all)
문제 1
memo1.txt
파일에는 여러 줄의 문장이 저장되어 있습니다.
이 파일을 한 줄씩 읽어서 화면에 출력하세요.조건 및 힌트
readline()
메서드를 사용하세요.- 더 이상 읽을 줄이 없으면
""
(빈 문자열)이 반환됩니다.
정답 보기
방법 1 — `readline()` 사용
with open('memo1.txt', 'r') as f:
line = f.readline()
while line:
print(line.strip())
line = f.readline()
방법 2 — for 사용
with open ('memo1.txt', 'r') as f:
for line in f:
print(line)
3. 파일 쓰기
파일에 새로운 내용을 기록하려면 쓰기 모드(w
) 또는 추가 모드(a
)로 열어야 합니다.
w
모드: 기존 내용을 모두 지우고 새로 작성a
모드: 기존 내용을 유지한 채 뒤에 이어서 작성
# w 모드 예시 — 기존 내용을 덮어쓰기
with open("memo.txt", "w", encoding="utf-8") as f:
f.write("첫 번째 줄\n")
f.write("두 번째 줄\n")
# a 모드 예시 — 기존 파일에 내용 추가
with open("memo.txt", "a", encoding="utf-8") as f:
f.write("세 번째 줄 (추가)\n")
4. 파일 닫기
파일 작업이 끝나면 반드시 파일을 닫아야 합니다.
파일을 닫지 않으면 다음과 같은 문제가 생길 수 있습니다.
- 메모리와 같은 시스템 자원이 불필요하게 점유됩니다.
- 파일이 다른 프로그램에서 사용되지 못할 수 있습니다.
- 데이터가 완전히 저장되지 않아 손상될 위험이 있습니다.
# 파일을 열었지만 닫지 않은 경우
f = open("memo.txt", "w", encoding="utf-8")
f.write("파일 닫기 실습 중입니다.")
# f.close()가 없다면, 내용이 저장되지 않을 수도 있음
안전한 방법: with 구문
파이썬에서는 with 구문을 사용하면 블록이 끝날 때 자동으로 close()가 실행됩니다.
with open("memo.txt", "w", encoding="utf-8") as f:
f.write("이 문장은 자동으로 저장되고 파일은 닫힙니다.")
문제 2
hello.txt
파일에는 여러 줄의 문장이 저장되어 있습니다.
이 중에서 “Python”이라는 단어가 들어 있는 줄만 출력하세요.
정답 보기
with open("memo.txt", "r", encoding="utf-8") as f:
for line in f:
if "Python" in line:
print(line.strip())
문제 3
scores.txt
파일의 내용은 다음과 같습니다.
필릭스,83
연준,60
…
파일을 읽어와서 각 학생의 점수를 출력하고, 총점과 평균 점수를 계산하여 마지막에 출력하세요.힌트
line.split(",")
로 이름과 점수를 분리하고,int()
로 점수를 정수로 바꿉니다.
정답 보기
총점 = 0
학생수 = 0
with open("scores.txt", "r", encoding="utf-8") as f:
for line in f:
이름, 점수 = line.strip().split(",")
점수 = int(점수)
print(f"{이름} 학생 점수: {점수}")
총점 += 점수
학생수 += 1
평균 = 총점 / 학생수
print("총점:", 총점)
print("평균:", 평균)
5. 사용자 입력
프로그램은 단순히 파일을 읽고 쓰는 것만이 아니라, 사용자로부터 입력을 받아 처리할 수도 있습니다.
파이썬에서는 input()
함수를 사용하여 키보드로부터 문자열을 입력받을 수 있습니다.
name = input("당신의 이름을 입력하세요: ")
print("안녕하세요,", name, "님!")
age = int(input("나이를 입력하세요: "))
print("내년에는", age + 1, "살이 됩니다.")
문제 4
사용자에게 과목 이름과 점수를 입력받아 딕셔너리에 저장하고,
모든 입력이 끝나면 딕셔너리 전체 파일로 출력하세요.조건
- 입력 형식 예시: 국어 90
- “exit”를 입력하면 종료
정답 보기
# 과목 점수를 입력받아 딕셔너리에 저장 후 파일로 저장하기
scores = {}
while True:
data = input("과목 이름과 점수를 입력하세요 (종료: exit): ")
if data == "exit":
break
subject, score = data.split()
scores[subject] = int(score)
# 딕셔너리 확인
print("입력된 점수:", scores)
# 파일 생성 및 저장
with open("scores.txt", "w", encoding="utf-8") as f:
for subject, score in scores.items():
f.write(f"{subject},{score}\n")
print("scores.txt 파일이 생성되었습니다.")