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() 함수를 사용합니다.

이제 파일 입출력을 통해 데이터를 저장하고 불러올 수 있게 되었습니다. 다음 장에서는 예외 처리에 대해 배워보겠습니다.