개발/python

파이썬 파일 입출력: 텍스트 파일 읽고 쓰는 기본 방법

notebase 2026. 5. 22. 10:05

파이썬에서 텍스트 파일을 읽고 쓰는 방법을 open, with, read, readline, write 예제로 초보자 기준에서 정리합니다.

 

파이썬 파일 입출력은 프로그램 밖에 있는 파일을 읽거나, 프로그램에서 만든 내용을 파일로 저장하는 방법입니다. 메모장에 적힌 내용을 읽거나, 계산 결과를 텍스트 파일로 저장할 때 사용할 수 있습니다.

프로그램 안의 변수는 실행이 끝나면 사라집니다. 하지만 파일로 저장하면 나중에 다시 열어 사용할 수 있습니다.

파일 입출력이 필요한 상황

예를 들어 다음과 같은 경우 파일 입출력이 필요합니다.

  • 사용자가 입력한 내용을 저장할 때
  • 프로그램 실행 결과를 기록할 때
  • 텍스트 파일에 있는 데이터를 읽어올 때
  • 로그 파일을 만들 때
  • 설정 파일을 불러올 때

초보 단계에서는 먼저 텍스트 파일을 읽고 쓰는 방법부터 익히면 충분합니다.

open 함수 기본 구조

파이썬에서 파일을 다룰 때는 open() 함수를 사용합니다.

file = open("sample.txt", "r", encoding="utf-8")
content = file.read()
print(content)
file.close()

이 코드는 sample.txt 파일을 읽어서 화면에 출력합니다.

여기서 중요한 부분은 세 가지입니다.

코드 의미
sample.txt 열 파일 이름
r 읽기 모드
encoding="utf-8" 한글 처리를 위한 인코딩 설정

파일을 열었으면 마지막에 close()로 닫아야 합니다.

하지만 매번 직접 닫는 방식은 실수하기 쉽습니다. 그래서 보통은 with 문을 사용합니다.

with 문으로 파일 열기

파일 입출력에서는 with 문을 사용하는 방식이 일반적입니다.

with open("sample.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(content)

with 문을 사용하면 파일을 직접 닫지 않아도 됩니다.

코드 블록이 끝나면 파이썬이 자동으로 파일을 닫아줍니다.

따라서 초보자라면 파일을 다룰 때 with open(...) as file: 형태를 기본으로 사용하는 것이 좋습니다.

파일 읽기 모드

파일을 읽을 때는 r 모드를 사용합니다.

with open("memo.txt", "r", encoding="utf-8") as file:
    text = file.read()
    print(text)

read()는 파일 전체 내용을 하나의 문자열로 읽습니다.

예를 들어 memo.txt 파일 내용이 다음과 같다고 가정하겠습니다.

파이썬 공부
파일 입출력 연습

실행 결과는 다음과 같습니다.

파이썬 공부
파일 입출력 연습

파일 전체를 한 번에 읽고 싶을 때 read()를 사용합니다.

한 줄씩 읽기

파일을 한 줄씩 읽고 싶을 때는 readline()을 사용할 수 있습니다.

with open("memo.txt", "r", encoding="utf-8") as file:
    line1 = file.readline()
    line2 = file.readline()

print(line1)
print(line2)

readline()은 호출할 때마다 한 줄씩 읽습니다.

하지만 실제로는 반복문과 함께 파일을 읽는 방식이 더 자주 사용됩니다.

with open("memo.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line.strip())

strip()은 줄 끝의 줄바꿈 문자나 앞뒤 공백을 제거할 때 사용합니다.

파일을 줄 단위로 처리해야 한다면 이 방식이 읽기 좋습니다.

여러 줄을 리스트로 읽기

readlines()를 사용하면 파일의 각 줄을 리스트로 가져올 수 있습니다.

with open("memo.txt", "r", encoding="utf-8") as file:
    lines = file.readlines()

print(lines)

실행 결과는 다음과 비슷합니다.

['파이썬 공부\n', '파일 입출력 연습\n']

각 줄이 리스트의 요소로 들어갑니다.

줄 끝에 \n이 포함될 수 있다는 점을 기억해야 합니다.

파일 쓰기 모드

파일에 내용을 저장할 때는 w 모드를 사용합니다.

with open("result.txt", "w", encoding="utf-8") as file:
    file.write("파이썬 파일 쓰기 연습")

이 코드를 실행하면 result.txt 파일이 만들어지고 내용이 저장됩니다.

중요한 점이 있습니다.

w 모드는 기존 파일 내용이 있으면 모두 지우고 새로 씁니다.

예를 들어 이미 result.txt에 내용이 있었더라도 위 코드를 실행하면 기존 내용은 사라집니다.

줄바꿈 넣어서 쓰기

write()는 자동으로 줄바꿈을 넣어주지 않습니다.

줄을 나누고 싶다면 \n을 직접 넣어야 합니다.

with open("result.txt", "w", encoding="utf-8") as file:
    file.write("첫 번째 줄\n")
    file.write("두 번째 줄\n")

저장된 파일 내용은 다음과 같습니다.

첫 번째 줄
두 번째 줄

파일에 내용 추가하기

기존 내용을 지우지 않고 뒤에 추가하고 싶다면 a 모드를 사용합니다.

with open("result.txt", "a", encoding="utf-8") as file:
    file.write("추가된 줄\n")

a는 append의 의미입니다.

파일 끝에 새로운 내용이 추가됩니다.

파일 모드 정리

모드 의미 특징
r 읽기 파일이 없으면 오류 발생
w 쓰기 기존 내용을 지우고 새로 작성
a 추가 기존 내용 뒤에 이어서 작성
x 새 파일 생성 파일이 이미 있으면 오류 발생

초보 단계에서는 r, w, a 세 가지만 먼저 익히면 충분합니다.

파일이 없을 때 발생하는 오류

읽기 모드에서 파일이 없으면 오류가 발생합니다.

with open("없는파일.txt", "r", encoding="utf-8") as file:
    content = file.read()

이 코드는 FileNotFoundError가 발생할 수 있습니다.

파일이 없을 가능성이 있다면 예외 처리를 함께 사용할 수 있습니다.

try:
    with open("memo.txt", "r", encoding="utf-8") as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")

파일 입출력은 예외 처리와 함께 쓰이는 경우가 많습니다.

간단한 메모 저장 예제

사용자가 입력한 내용을 파일에 저장하는 예제를 보겠습니다.

memo = input("메모를 입력하세요: ")

with open("memo.txt", "w", encoding="utf-8") as file:
    file.write(memo)

입력한 메모가 memo.txt 파일에 저장됩니다.

이번에는 저장된 파일을 다시 읽어보겠습니다.

with open("memo.txt", "r", encoding="utf-8") as file:
    memo = file.read()

print("저장된 메모:", memo)

이렇게 파일에 저장하면 프로그램을 종료한 뒤에도 데이터를 다시 사용할 수 있습니다.

인코딩을 지정해야 하는 이유

한글이 들어간 파일을 다룰 때는 encoding="utf-8"을 지정하는 것이 좋습니다.

with open("memo.txt", "r", encoding="utf-8") as file:
    content = file.read()

인코딩 설정이 맞지 않으면 한글이 깨지거나 오류가 발생할 수 있습니다.

특히 윈도우 환경에서는 인코딩 문제를 만나는 경우가 있으므로 초보 단계부터 encoding="utf-8"을 쓰는 습관을 들이는 것이 좋습니다.

정리

파이썬 파일 입출력은 파일을 읽고 쓰기 위한 기본 문법입니다.

파일을 열 때는 open()을 사용하고, 가능하면 with 문과 함께 사용하는 것이 좋습니다.

읽을 때는 r, 새로 쓸 때는 w, 기존 내용 뒤에 추가할 때는 a 모드를 사용합니다.

텍스트 파일을 다룰 때는 한글 깨짐을 줄이기 위해 encoding="utf-8"을 함께 지정하는 편이 안전합니다.