Python 공부

파일 열기/읽기/쓰기, 주요 모드, with문을 활용한 파일 처리, 예외처리

myun0506 2026. 1. 14. 18:14

 

- 파일 열기 (open 함수)

file_object = open("파일이름", "모드")

 

  • 주요 모드 종류
    • "r": 읽기 전용 모드(기본값). 해당 파일이 존재하지 않으면 에러 발생
    • "w": 쓰기 전용 모드. 파일이 존재하면 내용을 모두 지우고, 존재하지 않으면 새로 만듦
    • "a": 추가(append)모드. 파일의 끝에 새로운 내용을 덧붙임. 파일이 없으면 새로 만듦
    • "x": 쓰기 전용으로 새 파일을 만들기 위한 모드. 파일이 이미 존재하면 에러 발생
    • "r+": 읽기/쓰기 겸용 모드. 기존 파일에 대해 읽고 쓰기 모두 가능
    • "b": 바이너리 모드. "rb", "wb" 등의 형태로 다른 모드와 조합하여, 텍스트가 아닌 이미지, 음악 파일 등 이진 데이터 처리 시 사용
    • "t": 텍스트 모드(기본값). "r","w" 등이 기본적으로 "t" 모드임

- 파일 읽기

  • 읽기 모드("r")로 연 파일에 대해 다음과 같은 메서드를 사용해서 내용을 읽을 수 있음
    • read() : 파일 전체 내용을 문자열로 읽어옴
    • readline() : 파일에서 한 줄씩 읽어옴
    • readlines() : 파일 전체 내용을 한 줄씩 나누어 리스트로 반환
file = open("example.txt", "r", encoding="utf-8")  # UTF-8 인코딩 지정 가능
content = file.read()  # 파일 전체 읽기
print(content)

line = file.readline()  # 첫 번째 줄 읽기
print(line)
line = file.readline()  # 두 번째 줄 읽기
print(line)

lines = file.readlines()  # 모든 줄을 읽어 리스트로 반환
for l in lines:
    print(l.strip())  # strip()으로 양 끝 공백 제거
file.close()

 

- 파일 쓰기

  • 파일에 쓰기 위해서는 "w", "a", "r+", "x" 등 쓰기 기능이 지원되는 모드로 열어야 함
    • "w" 모드: 기존 내용을 모두 지우고 새로 쓰기 시작함
    • "a" 모드: 기존 파일의 끝에 내용을 이어 붙임

- with 문을 이용한 파일 처리

  • with 문 사용하면 블록이 끝날 때 자동으로 파일을 닫아주기 때문에 close()를 깜빡하는 실수를 방지할 수 있음
with open("example.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print(content)
    
# 여기서는 with 블록을 빠져나가면 f가 자동으로 close() 처리됩니다.

# 쓰기 예시
with open("output.txt", "w", encoding="utf-8") as f:
    f.write("안녕하세요!\n")
    f.write("이 내용은 output.txt에 쓰여집니다.\n")

# with 블록 종료 시 자동으로 f.close() 호출

 

- 바이너리 파일 다루기

  • 이미지, 오디오, 영상, PDF 등 텍스트로 이루어지지 않은 파일은 바이너리 모드("b")로 열어야함
# 이미지 파일 복사 예제
with open("image.jpg", "rb") as src:
    data = src.read()

with open("copy.jpg", "wb") as dst:
    dst.write(data)
  • "rb"로 원본 이미지를 읽고, "wb"로 복사본 작성함
  • 텍스트 인코딩 관련 인자는 필요 없음

- 예외 처리

  • 파일이 존재하지 않거나 경로가 잘못된 경우
  • 권한 부족으로 파일을 열 수 없는 경우
  • 디스크 문제가 발생한 경우
  • → try-except 구문 사용
try:
    with open("nonexistent.txt", "r", encoding="utf-8") as f:
        data = f.read()
        print(data)
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
except PermissionError:
    print("파일에 접근할 권한이 없습니다.")