일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 에어플로우 기초강의
- 파이썬
- c++
- airflow
- 기초강의
- 도커 컴포즈
- 쇼핑몰예제
- 장고 튜토리얼
- 장고 기초 강의
- 장고
- 개발자
- 플라스크
- mlops
- 프로그래밍
- flask
- 개발자취업
- 파이썬강의
- docker
- Python
- cpp
- C언어
- 웹개발
- c
- ADP
- 개발언어
- 인공지능
- 파이썬 장고
- 예제프로젝트
- 도커
- Django
- Today
- Total
TITEDIOS 편한 코딩
Python 기초강의: #20 파일 처리(3) - 파일 처리와 예외 처리 본문
파일 입출력은 많은 프로그램에서 필수적인 기능입니다. 그러나 파일을 다루다 보면 파일이 존재하지 않거나, 읽기/쓰기 권한이 없거나, 잘못된 형식의 파일을 읽는 등의 다양한 예외 상황이 발생할 수 있습니다. 이러한 예외 상황에 대비하여 적절한 예외 처리를 구현하는 것은 매우 중요합니다. 이 포스팅에서는 파이썬에서 파일 처리를 할 때 발생할 수 있는 예외와 이를 처리하는 방법을 알아보겠습니다.
1. 기본적인 파일 처리
우선, 파일을 여는 기본적인 방법부터 살펴보겠습니다. 이제는 많이 익숙해진 코드일 것으로 감히 예상해 봅니다ㅎㅎㅎ. 텍스트 파일을 읽고 쓰는 예제입니다.
# 파일 읽기
try:
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
except IOError:
print("파일을 읽는 동안 오류가 발생했습니다.")
이 예제는 example.txt 파일을 열고 내용을 읽어서 출력합니다. 만약 파일이 존재하지 않거나 읽기 권한이 없으면, FileNotFoundError 또는 IOError 예외가 발생하고, 적절한 메시지를 출력합니다.
2. 파일 쓰기
파일에 데이터를 쓸 때도 비슷한 방식으로 예외 처리를 할 수 있습니다. 읽기 예제와 모드만 다를 뿐 같은 코드입니다. 다만 쓰는 코드느 파일이 없는 오류가 발생하지 않기 때문에 IOError 처리만 추가하였습니다.
# 파일 쓰기
try:
with open('example.txt', 'w', encoding='utf-8') as file:
file.write('Hello, World!\n')
except IOError:
print("파일을 쓰는 동안 오류가 발생했습니다.")
이 예제는 example.txt 파일을 열고 데이터를 씁니다. 만약 쓰기 권한이 없거나 다른 I/O 오류가 발생하면, IOError 예외가 발생하고, 에러 메시지를 출력합니다.
3. 파일 존재 여부 확인
파일을 열기 전에 파일의 존재 여부를 확인하는 것이 좋습니다. 이를 위해 os 모듈의 path.exists 메서드를 사용할 수 있습니다.
import os
if os.path.exists('example.txt'):
try:
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
except IOError:
print("파일을 읽는 동안 오류가 발생했습니다.")
else:
print("파일이 존재하지 않습니다.")
이 코드는 파일이 존재하는지 확인한 후 파일을 열어 읽습니다. 파일이 없으면, 에러 메시지를 출력합니다.
4. 일반적인 예외 처리
모든 예외 상황을 포괄적으로 처리하고 싶다면, Exception 클래스를 사용할 수 있습니다. 하지만, 이렇게 하면 구체적인 예외 상황을 놓칠 수 있으므로 사용에 주의해야 합니다. 하지만!! 구체적 예외 상황을 처리하지 않아 편하게(!!) 사용할 수 있고 에러메시지를 통해 어떤 상황에서 에러가 발생하는지 확인할 수 있다는 장점이 있습니다.
try:
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
except Exception as e:
print(f"파일을 처리하는 동안 예외가 발생했습니다: {e}")
이 코드는 발생할 수 있는 모든 예외를 처리하고, 예외 메시지를 출력합니다.
5. 예외 발생시키기
필요에 따라 커스텀 예외를 발생시킬 수도 있습니다. 예를 들어, 파일 크기가 너무 큰 경우 예외를 발생시키고 싶을 때 사용할 수 있습니다.
# 커스텀 에러 처리
class FileTooLargeError(Exception):
pass
try:
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
if len(content) > 1000: # 파일 크기 제한 예시
raise FileTooLargeError("파일이 너무 큽니다.")
print(content)
except FileTooLargeError as e:
print(e)
except Exception as e:
print(f"파일을 처리하는 동안 예외가 발생했습니다: {e}")
이 예제에서는 파일 크기가 1000바이트를 초과하면 FileTooLargeError 예외를 발생시키고, 이를 처리합니다.
결론
파일 처리를 할 때는 항상 예외 상황을 염두에 두고 코드를 작성하는 것이 중요합니다. 파이썬의 예외 처리 기능을 사용하면 파일이 존재하지 않거나 권한이 없을 때, 또는 다른 I/O 오류가 발생했을 때 적절히 대응할 수 있습니다. 위에서 다룬 다양한 예외 처리 방법을 활용하여 안정적인 파일 입출력 코드를 작성해 보세요.
파일을 다루는데 에러가 많이 발생할 수 있습니다. 특히, 파일이 없을 수도 있고 권한 등 예측이 불가능한 에러가 다양하게 발생합니다. 이러한 예외 처리를 해주지 않는다면 프로그램은 수시로 '나 일 안해'하면서 파업 상태에 놓일 수 있습니다. 여러분은 예외 처리 등으로 안전한 프로그램을 만드는 노력을 해주시길 바랍니다.
감사합니다!
'파이썬' 카테고리의 다른 글
Python 기초강의: #22 정규 표현식(2) - 메타문자 (2) | 2024.07.14 |
---|---|
Python 기초강의: #21 정규 표현식(1) - 기본 문법 (0) | 2024.07.13 |
Python 기초강의: #19 파일 처리(2) - 텍스트 파일과 이진 파일 (0) | 2024.07.11 |
Python 기초강의: #18 파일 처리(1) - 파일 읽기와 쓰기 (0) | 2024.07.10 |
Python 기초강의: #17 데이터 구조 - 세트(set) (0) | 2024.07.09 |