hojeomi blog
Day 5-1. File / Exception / Log Handling 본문
1. Exception¶
- 예상 가능한 예외
- 예상 불가능한 예외(인터프리터 과정에서 발생하는 예외, 리스트 범위를 넘어가는 값 호출) → Exception Handling으로 처리해줘야 함
1-a. Excption Handling¶
1) try-except¶
- Build-in error 종류
1) IndexError: List의 index 범위를 넘어갈 때
2) NameError: 존재하지 않는 변수를 호출할 때
3) ZeroDivisionError: 0으로 나눌 때
4) ValueError: 변환할 수 없는 문자/숫자를 변환할 때
5) FileNotFoundError: 존재하지 않는 파일을 호출할 때
In [6]:
a = [1,2,3,4,5]
for i in range(10):
try:
print(i, 10//i)
print(a[i]) # a[5] 이상은 존재하지 않음 -> list index of range 에러 -> IndexError 처리 필요
print(v) # Exception으로 에러 잡음
except ZeroDivisionError: # ZeroDivisionError -> built-in error
print("Not division")
except IndexError as e: # e로 어디서 에러인지 확인
print(e)
except Exception as e: # 전체 예외 찾는 법 but, 어디서 무슨 에러가 나는지 명확하지 않기에 권장하지 않음
print(e)
2) try-except-else¶
3) try-except-finally: finally 부분이 예외 발생 여부와 상관없이 항상 돌아감¶
4) raise: 잘못 입력된 값 등의 경우에 프로그램 중지시킴¶
5) assert: 잘못됐는지 확인 후 True/False → 프로그램 중지시킴¶
In [ ]:
In [ ]:
2. 파일의 종류¶
- 기본적인 파일 종류로 text파일과 binary파일로 나눔
- 컴퓨터는 text파일을 처리하기 위해 binary 파일로 변환시킴
- 모든 text파일도 실제는 binary파일, ASCII/UNIcode 문자열 집합으로 저장되어 사람이 읽을 수 있음
- binary파일: 컴퓨터만 이해할 수 있는 이진형식, 메모장/워드/엑셀 등을 열었을 때 깨져보이는 이유
- text파일: 인간도 이해할 수 있는 문자열형식, 메모장에 저장된 파일/HTML파일/파이썬 코드 파일 등
1) 파이썬의 파일 읽기¶
1-a)¶
f = open("파일 상대 주소.txt", "r")
contents = f.read()
print(contents)
f.close()
1-b) with 사용하기 → close 없어도 코드가 닫힘¶
with open("파일주소", "r") as f:
contents = f.read()
print(contents)
1-c) readlines() 사용하기 → 리스트에 저장¶
1-d) readline() 사용하기 → 한 줄씩 읽음¶
In [ ]:
In [ ]:
3. 파이썬 디렉토리(directory) 다루기¶
1) OS module¶
import os
os.mkdir("test") → "test"라는 디렉토리(폴더)가 만들어짐
In [12]:
import os
os.path.exists("Day4-1..py")
Out[12]:
2) pathlib module¶
3) Pickle module¶
- 파이썬의 객체를 영속화(persistance)하는 built-in 객체
- 데이터, object 등 실행중 정보를 저장 → 불러와서 사용
- 저장해야하는 정보, 계산 결과(모델) 등 활용이 많음
- 다양한 정보를 필요할 때마다 저장(영속)해서 사용할 때
In [ ]:
In [ ]:
4. Logging Handling¶
- 게임 핵 잡을 때
- 로그 남기기(Logging)
1) 프로그램이 실행되는 동안 일어나는 정보 기록
2) 유저의 접근, 프로그램의 Exception, 특정 함수의 사용
3) Console 화면에 출력, 파일에 남기기, DB에 남기기 등
4) 기록된 로그를 분석하여 의미있는 결과를 도출 할 수 있음
5) 실행시점에서 남겨야 하는 기록, 개발시점에서 남겨야하는 기록
예제 파일 주소: C:\Users\hjm26\workspace\python-101\2019-gahcon-ime\code\13
1) print vs. logging¶
- 기록을 print로 남기는 것도 가능함
- 그러나 console 창에만 남기는 분석시 사용불가
- 때로는 레벨별(개발, 운영)로 기록을 남길 필요도 있음
- 모듈별로 별도의 logging을 남길 필요도 있음
- 이러한 기능을 체계적으로 지원하는 모듈 필요
1-a) logging level¶
- 프로그램 진행 상황에 따라 다른 level의 log를 출력함
- 개발 시점, 운영 시점마다 다른 log가 남을 수 있도록 지원함
- DEBUG > INFO > WARNING > ERROR > CRITICAL
1-b) 데이터 파일 위치, 파일 저장 장소, operation type 등의 설정을 해야 함 → 크게 두 가지 방법¶
- configparser: 파일에
- argparser: 실행시점에
In [ ]:
'AI > Course' 카테고리의 다른 글
Day 6-1. numpy (0) | 2021.01.25 |
---|---|
Day 2-2. 파이썬 함수에서 call by object reference (0) | 2021.01.25 |
4-1. 파이썬 OOP(객체 지향 프로그래밍) (1) | 2021.01.22 |
3-2. Pythonic Code (0) | 2021.01.21 |
Day 3-1. Python Data Structure (0) | 2021.01.20 |
Comments