CS (Computer Science)

[개발 공부 95일차] 파이썬 | 파일 입출력, 예외 처리

MOLLY_ 2024. 9. 5. 11:11
728x90

< 목차 >

0. 파일 입출력 (I/O)

1. 예외 처리

2. 예외 발생시키기

 

 

파이썬에서 파일 입출력과 예외 처리는 데이터를 저장하고 읽어오는 작업 및 프로그램의 오류를 다루는 중요한 기능이다. 파일 입출력과 예외 처리의 핵심 개념과 방법을 알아보자.

 

 

0. 파일 입출력 (I/O)

파일 열기

파일을 열 때는 open() 함수를 사용한다. 이 함수는 파일 객체를 반환하며, 다양한 모드로 파일을 열 수 있다.

  • 모드(Mode):
    • 'r': 읽기 모드 (기본값)
    • 'w': 쓰기 모드 (파일이 없으면 새로 생성, 있으면 덮어씀)
    • 'a': 추가 모드 (파일이 없으면 새로 생성, 있으면 끝에 추가)
    • 'b': 바이너리 모드 (예: 'rb', 'wb')
    • 'x': 배타적 생성 모드 (파일이 없을 때만 생성)
# example.txt 파일을 읽기 모드로 엶
file = open("example.txt", "r")

 

 

파일 읽기

  • 전체 읽기: 파일의 모든 내용을 읽음
  • content = file.read()
  • 라인별 읽기: 한 번에 한 줄씩 읽음
  • line = file.readline()
  • 모든 라인 읽기: 파일의 모든 줄을 리스트로 반환함
  • lines = file.readlines()

 

 

파일 쓰기

파일에 데이터를 쓰려면 'w' 또는 'a' 모드로 파일을 열고 write() 메서드를 사용한다.

file = open("example.txt", "w")
file.write("Hello, World!")

 

 

파일 닫기

파일 작업이 끝나면 close() 메서드를 사용해 파일을 닫아야 한다. 이는 시스템 리소스를 해제하고, 데이터 손상을 방지한다.

file.close()

 

 

with 문을 사용한 파일 작업

with 문을 사용하면 파일을 자동으로 닫을 수 있다. 이는 파일 작업 중 예외가 발생하더라도 파일이 적절하게 닫히도록 보장한다.

with open("example.txt", "r") as file:
    content = file.read()

 

 

1. 예외 처리

예외 처리(Exceptions)는 프로그램 실행 중 발생할 수 있는 오류를 처리하여 프로그램이 비정상적으로 종료되지 않도록 도와준다.

 

 

기본 구조

  • try: 오류가 발생할 수 있는 코드를 실행
  • except: 오류가 발생했을 때 실행할 코드를 정의
  • else: 오류가 발생하지 않았을 때 실행할 코드를 정의
  • finally: 오류 발생 여부와 관계없이 항상 실행할 코드를 정의

 

try:
    file = open("example.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
except Exception as e:
    print(f"예기치 않은 오류 발생: {e}")
else:
    print("파일을 성공적으로 읽었습니다.")
finally:
    file.close()

 

 

자주 사용하는 예외

  • FileNotFoundError: 파일이 존재하지 않을 때 발생
  • ValueError: 잘못된 값이 할당될 때 발생
  • ZeroDivisionError: 0으로 나누려고 할 때 발생
  • KeyError: 딕셔너리에서 존재하지 않는 키를 참조할 때 발생

 

예외 처리 예외 상황의 의미와 발생 원인
ArithmeticError 수의 연산과 관련된 문제가 발생할 때
EOFError 파일 등에서 읽어 들일 데이터가 더 이상 없을 때
Exception 대부분의 예외의 가장 상위 예외 처리 발생할 때
FileExistsError 이미 존재하는 파일이나 폴더를 새로 생성하려 할 때
FileNotFoundError 존재하지 않는 파일이나 폴더를 오픈하려 할 때
ImportError 모듈(라이브러리)을 불러올 수 없을 때
IndentationError 문법에서 들여쓰기가 잘못되었을 때
IndexError 잘못된 인덱스를 인덱싱할 때

 

 

2. 예외 발생시키기

필요에 따라 프로그래머가 직접 예외를 발생시킬 수도 있다. raise 키워드를 사용한다.

x = -1
if x < 0:
    raise ValueError("x는 0보다 커야 합니다.")

 

 

728x90