🔥 파일 오류와 예외 처리

416자
5분

파일 처리는 Python 프로그래밍에서 중요한 부분 중 하나입니다. 파일을 읽고 쓰는 작업 중에 발생할 수 있는 오류와 예외를 처리하는 방법은 중요합니다. 이 장에서는 Python에서 파일 오류와 예외를 다루는 방법에 대해 자세히 설명하겠습니다. 각 섹션에서는 예제 코드를 통해 실제 상황에서 발생할 수 있는 문제와 그에 대한 해결책을 제시할 것입니다.

파일 오류와 예외 처리란?

파일 처리 작업 중에는 여러 가지 오류가 발생할 수 있습니다. 예를 들어 파일이 존재하지 않을 수 있거나, 파일을 읽거나 쓸 권한이 없을 수 있습니다. 이러한 상황에서 프로그램이 중단되지 않도록 예외 처리를 해야 합니다. 파일 오류와 예외 처리는 프로그램의 안정성을 높이고 사용자 경험을 향상시키는 데 도움이 됩니다.

파일 존재 여부 확인하기

파일을 열기 전에 파일이 실제로 존재하는지 확인하는 것이 중요합니다. 이를 위해 os 모듈을 사용하여 파일의 존재 여부를 확인할 수 있습니다. 다음은 파일이 존재하는지 확인하는 예제 코드입니다.

import os
 
file_path = "my_file.txt"
 
if os.path.exists(file_path):
    print(f"{file_path} 파일이 존재합니다.")
else:
    print(f"{file_path} 파일이 존재하지 않습니다.")
 
python

파일 읽기 예외 처리

파일을 읽을 때 예외 처리가 필요한 경우가 있습니다. 파일이 존재하지 않거나 읽을 권한이 없는 경우, FileNotFoundErrorPermissionError와 같은 예외가 발생할 수 있습니다. 이러한 예외를 처리하는 방법을 살펴보겠습니다.

file_path = "my_file.txt"
 
try:
    with open(file_path, "r") as file:
        data = file.read()
    print(data)
except FileNotFoundError:
    print(f"{file_path} 파일을 찾을 수 없습니다.")
except PermissionError:
    print(f"{file_path} 파일을 읽을 권한이 없습니다.")
 
python

파일 쓰기 예외 처리

파일을 쓸 때도 예외 처리가 필요합니다. 디스크 공간이 부족하거나 쓰기 권한이 없는 경우 FileNotFoundErrorPermissionError와 같은 예외가 발생할 수 있습니다. 이러한 상황을 처리하는 방법을 알아보겠습니다.

file_path = "my_file.txt"
 
try:
    with open(file_path, "w") as file:
        file.write("Hello, World!")
    print(f"{file_path} 파일에 데이터를 쓸 수 있습니다.")
except FileNotFoundError:
    print(f"{file_path} 파일을 찾을 수 없습니다.")
except PermissionError:
    print(f"{file_path} 파일을 쓸 권한이 없습니다.")
 
python

파일 닫기와 finally 블록

파일 처리 작업 후 파일을 닫는 것이 중요합니다. 파일을 열었으면 반드시 닫아야 합니다. 그리고 finally 블록을 사용하여 예외 발생 여부와 관계없이 파일을 안전하게 닫을 수 있습니다.

file_path = "my_file.txt"
 
try:
    file = open(file_path, "r")
    data = file.read()
    print(data)
except FileNotFoundError:
    print(f"{file_path} 파일을 찾을 수 없습니다.")
except PermissionError:
    print(f"{file_path} 파일을 읽을 권한이 없습니다.")
finally:
    file.close()
 
python

컨텍스트 관리자(with 문)

파일을 열고 닫는 번거로움을 피하기 위해 컨텍스트 관리자인 with 문을 사용할 수 있습니다. with 문을 사용하면 파일을 열 때 자동으로 닫히므로 코드가 간결해집니다.

file_path = "my_file.txt"
 
try:
    with open(file_path, "r") as file:
        data = file.read()
    print(data)
except FileNotFoundError:
    print(f"{file_path} 파일을 찾을 수 없습니다.")
except PermissionError:
    print(f"{file_path} 파일을 읽을 권한이 없습니다.")
 
python

연습문제

  1. 파일이 존재하지 않는 경우에 대한 예외 처리를 추가한 코드를 작성해보세요.
  2. 파일을 읽을 때 발생할 수 있는 예외를 더 자세히 처리하는 방법을 고민해보세요.