Week1_Python_File / Exception / Log Handling
모르면 프로그래밍 하기 어려운 삼총사 : Exception/File/Log Handling
1. Exception Handling
프로그래밍할때 예상치 못한 많을 일들을 최대한 대비하기 위해 예외처리(Exception)을 해준다.
직접 if & print문을 찍어서 할수도 있지만, (사실 본인이 가장 편한대로 하면됨)
Exception Handling 문법을 사용했을때 훨씬 편리한 경우도 많다는점!!
if문은 -> '알고리즘 로직 처리' 에 주로 쓰이고,
Exception은 -> 잘못된 입력, 데이터 유실 등등 잘못된것을 바로잡기 위한 용도라고 보면 된다.
[try ~ except]
기본적으로 아래와 같은 문법을 따른다.
try:
예외 발생 가능 코드
except <Exception Type>:
예외 발생시 대응하는 코드
* Exception Type은 정말 많고 파이썬 라이브러리 공식 문서에 다 나와있으니 참고하자.
* 추가적으로 개인이 Exception을 만들 수도 있다.
* Exception 은 여러가 계속 달 수 있다. try ~ except ~ except~...
a = [1,2,3,4,5]
for i in range(10): # i : 0~9
try:
print(10//i) #10을 i로 나눈 몫 출력
except ZeroDivisionError:
print("Error") # Error발생시 프로그램 종료하지 않고 다시 try로 돌아감. 약간 continue같음
보통 프로그램이 돌아가다가 오류를 만나면 오류를 출력하고 프로그램을 멈춘다.
하지만 Exception을 쓰면 오류를 출력하고 계속 프로그램을 이어나갈 수 있다.
[ raise ]
필요에 따라 강제로 Exception을 발생 시킨다. 원하는 위치 원하는 조건에서
while True:
value = input("변환할 정수 값을 입력해주세요") # = 0~9사이로 입력받겠다
for digit in value:
if digit not in "0123456789":
raise ValueError("숫자값을 입력하지 않으셨습니다")
print("정수값으로 변환된 숫자 -", int(value))
[ assert ]
특정 조건을 만족하지 않을 경우 예외 발생 시킨다.
assert 예외조건
def get_binary_number(decimal_number):
assert isinstance(decimal_number, int)
return bin(decimal_number)
print(get_binary_number(10))
위의 assert isinstance같은 경우는 decimal_number가 뒤에 나오는 int type인지 T/F으로 반환해 에러를 발생시킨다.
2. File Handling
우선 기본적으로 파일 종류가 뭐가 있는지 알아야 한다. (.docx, .ppt, .json , .py 같은건 소분류고 대분류는 크게 두가지)
Binary 파일 | Text 파일 |
- 컴퓨터만 이해할 수 있는 이진 파일 - 인간이 이해할 수 없다. 예시 ) ![]() |
- 인간도 이해할 수 있는 파일 - 문자열 형식 - HTML, python code, .json 등등 readable |
[ read() ]
text 파일 안에 있는 내용 문자열로 반환
f = open("lala.txt", "r") # 주소 설정
content = f.read() # 실질적으로 읽는 부분
f.close()
[ with open ]
as 뒤에 나오는 변수로 파일 연다.
with open("lala.txt" , "r") as my_file:
content = mu_file.read()
print(content)
파일 이름 뒤에 나와있는 "r"의 위치에는 파일을 어떤 모드로 열지 정하는 곳이다.
"r" -> read only "w" -> 수정모드 ....
[ Os module ]
os.mkdir~
os.path.join~
등등 os 모듈에서 데릭토리와, 파일, 경로등을 핸들링 할 수 있게 해준다.
3. Pickel
컴퓨터 구조를 한번 생각해보면, 어떤 프로그램을 실행시켰을때 사용되는 변수와 객체들은 영구적으로 저장이 될 수도 있지만 주로 실행시켰을때만 반짝 사용이 된다. 파이썬에서 코드를 돌릴때도 변수들은 프로그램이 종료되면서 전부 사라진다.
Pickle은 객체들이 휘발되지 않고 영속화 될 수 있게 해준다.
4. Log Handling
: 프로그램이 실행되는 동안 이렁나는 정보를 기록을 남기는것!
접근, Exception 발생여부 등등 프로그램 실행동안의 상황을 저장해서 나중에 다시 볼 수 있게 한다.
print와 하는 역할은 비슷하지만, 콘솔창에만 남고, logging을 하면 파일로 저장이 된다.\\
[ logging 모듈 ]
import logging
logger = logging.getLogger("main") # Logger 선언
stream_handler = logging.StreamHandler # Logger의 output방법 선언
loger.addHandler(stream_handler) # Logger 의 output 기록