hojeomi blog

Day 5-1. File / Exception / Log Handling 본문

AI/Course

Day 5-1. File / Exception / Log Handling

호저미 2021. 1. 22. 21:28
Day 5-1.

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)
Not division
1 10
2
name 'v' is not defined
2 5
3
name 'v' is not defined
3 3
4
name 'v' is not defined
4 2
5
name 'v' is not defined
5 2
list index out of range
6 1
list index out of range
7 1
list index out of range
8 1
list index out of range
9 1
list index out of range

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]:
False

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