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
'CS (Computer Science)' 카테고리의 다른 글
[개발 공부 97일차] DB 개론 | 데이터베이스의 유형 및 특징 (5) | 2024.09.08 |
---|---|
[개발 공부 96일차] DB 개론 | 데이터베이스 및 관리 시스템 (6) | 2024.09.06 |
[개발 공부 93일차] 파이썬 | 데이터 타입 (리스트, 튜플, set, 딕셔너리) (2) | 2024.09.03 |
[개발 공부 92일차] 파이썬 | 터틀 라이브러리, 문자열 조작 명령어 (4) | 2024.08.31 |
[개발 공부 91일차] 파이썬 | 반복문 (for, while) (0) | 2024.08.30 |