11. 파일 입출력
파일 입출력은 프로그램에서 데이터를 파일에 저장하거나 파일로부터 데이터를 읽어오는 작업입니다. 파일 입출력을 통해 데이터를 영구적으로 저장하거나 불러올 수 있어 프로그램의 활용 범위를 넓힐 수 있습니다. 이 장에서는 파일을 열고, 읽고, 쓰는 방법을 배워보겠습니다.
11.1 파일 열기
파일을 열기 위해 파이썬에서는 open()
함수를 사용합니다. open()
함수는 파일을 열고, 파일 객체를 반환합니다. 파일을 열 때는 읽기(r
), 쓰기(w
), 추가(a
) 모드 중 하나를 선택할 수 있습니다.
# 파일 열기 예제
file = open("example.txt", "w") # 쓰기 모드로 파일 열기
r
(읽기 모드): 파일을 읽기 위해 열며, 파일이 존재하지 않으면 오류가 발생합니다.w
(쓰기 모드): 파일에 데이터를 쓰기 위해 열며, 기존 파일이 있다면 내용을 덮어씁니다. 파일이 없으면 새로 생성합니다.a
(추가 모드): 파일의 끝에 데이터를 추가합니다. 파일이 없으면 새로 생성합니다.
11.2 파일 쓰기
파일에 데이터를 쓰려면 write()
함수를 사용합니다. 파일을 다 쓴 후에는 반드시 close()
함수를 호출하여 파일을 닫아야 합니다.
# 파일 쓰기 예제
file = open("example.txt", "w")
file.write("Hello, Python!")
file.close()
위 코드에서는 example.txt
파일을 열고 문자열 “Hello, Python!”을 파일에 씁니다. 파일을 사용한 후에는 close()
함수로 파일을 닫습니다.
11.3 파일 읽기
파일로부터 데이터를 읽을 때는 read()
, readline()
, readlines()
함수를 사용할 수 있습니다.
read()
: 파일의 전체 내용을 하나의 문자열로 읽습니다.readline()
: 파일에서 한 줄씩 읽습니다.readlines()
: 파일의 모든 줄을 리스트로 읽습니다.
# 파일 읽기 예제
file = open("example.txt", "r")
content = file.read()
print(content)
file.close()
출력 결과:
Hello, Python!
11.3.1 파일을 줄 단위로 읽기
# 파일 줄 단위로 읽기 예제
file = open("example.txt", "r")
line = file.readline()
while line:
print(line.strip())
line = file.readline()
file.close()
위 코드는 파일을 줄 단위로 읽어 한 줄씩 출력합니다. strip()
함수는 각 줄의 끝에 있는 개행 문자를 제거합니다.
11.4 with 문을 사용한 파일 열기
파일을 열고 닫는 과정을 자동으로 처리하기 위해 with
문을 사용할 수 있습니다. with
문을 사용하면 파일을 열고 난 후 명시적으로 close()
를 호출할 필요가 없으며, 코드가 간결해집니다.
# with 문을 사용한 파일 쓰기 예제
with open("example.txt", "w") as file:
file.write("With statement example")
# with 문을 사용한 파일 읽기 예제
with open("example.txt", "r") as file:
content = file.read()
print(content)
출력 결과:
With statement example
11.5 파일 모드 정리
모드 | 설명 |
---|---|
r | 읽기 모드 (파일이 존재해야 함) |
w | 쓰기 모드 (기존 내용 덮어씀) |
a | 추가 모드 (파일 끝에 추가) |
r+ | 읽기 및 쓰기 모드 |
w+ | 읽기 및 쓰기 모드 (기존 내용 삭제) |
a+ | 읽기 및 추가 모드 |
11.6 예제: 파일에서 학생 성적 읽기
학생들의 성적을 파일에 저장하고, 해당 파일로부터 데이터를 읽어오는 예제를 작성해 보겠습니다.
성적 저장하기
# 학생 성적 저장 예제
with open("grades.txt", "w") as file:
file.write("철수: 85\n")
file.write("영희: 92\n")
file.write("민수: 78\n")
성적 읽기
# 학생 성적 읽기 예제
with open("grades.txt", "r") as file:
for line in file:
name, grade = line.strip().split(": ")
print(f"{name}의 성적: {grade}")
출력 결과:
철수의 성적: 85
영희의 성적: 92
민수의 성적: 78
11.7 요약
- 파일 입출력을 위해
open()
함수를 사용하며, 파일 모드에 따라 파일을 읽거나 쓸 수 있습니다. - 파일을 사용한 후에는 반드시
close()
함수를 호출하여 파일을 닫아야 합니다.with
문을 사용하면 파일을 자동으로 닫을 수 있습니다. - 파일의 내용을 읽을 때는
read()
,readline()
,readlines()
함수를 사용합니다.
이제 파일 입출력을 통해 데이터를 저장하고 불러올 수 있게 되었습니다. 다음 장에서는 예외 처리에 대해 배워보겠습니다.