clear_uncertainty

네이버 부스트캠프 모각공 3일차 - File/Exception/Log Handling 본문

네이버 부스트캠프 - AI Tech 3rd/꼭 알아야하는 파이썬 기초지식

네이버 부스트캠프 모각공 3일차 - File/Exception/Log Handling

SOidentitiy 2021. 11. 10. 23:13
728x90

모든 설명 및 자료의 출처는 네이버 부스트코스의 <[부스트캠프  AI Tech 3기] Pre-Course>입니다.

(https://www.boostcourse.org/onlyboostcampaitech3/joinLectures/329424)

 

<꼭 알아야 하는 파이썬 기초지식>

File/Exception/Log Handling

 

프로그램 사용할 때 일어나는 오류들

- 주소를 입력하지 않고 배송 요청

- 저장을 안했는데 컴퓨터 전원이 나감

- 게임 아이템을 샀는데 게임에서 튕김

>예상치 못한 많은 일(예외)들이 생김, 이러한 예외를 Exception이라고 합니다.

 

Exception

 

1) 예상 가능한 예외

2) 예상이 불가능한 예외

 

1) 예상 가능한 예외

- 발생 여부를 사전에 인지할 수 있는 예외

- 사용자의 잘못된 입력, 파일 호출시 파일 없음

- 개발자가 반드시 명시적으로 정의 해야함

 

2) 예상이 불가능한 예외

- 인터프리터 과정에서 발생하는 예외, 개발자 실수

- 리스트의 범위를 넘어가는 값 호출, 정수 0으로 나눔

- 수행 불가시 인터프리터가 자동 호출

-예외가 발생할 경우 후속 조치 등 대처 필요

Ex1) 없는 파일 호출 > 파일 없음을 알림

Ex2) 게임 이상 종료 > 게임 정보 저장

프로그램 = 제품, 모든 잘못된 상황에 대처가 필요

 

Exception Handling

 

try ~ except 문법    

 

Built - in Exception : 기본적으로 제공하는 예외

 

raise 구문

-필요에 따라 강제로 Exception을 발생

 

assert 구문

-특정 조건에 만족하지 않을 경우 예외 발생

 

File handling

 

File system

OS에서 파일을 저장하는 트리구조 저장체계

 

파일의 기본 체계 - 파일 vs 디렉토리

 

디렉토리 (Directory)

-폴더 또는 디렉토리로 불림

-파일과 다른 디렉토리를 포함할 수 있음

 

파일 (File)

-컴퓨터에서 정보를 저장하는 논리적인 단위

-파일은 파일명과 확장자로 식별 (Ex) hello.py

-실행, 쓰기, 읽기 등을 할 수 있음

 

파일의 종류

 

기본적인 파일 종류로 text 파일과 binary 파일로 나뉨

컴퓨터는 text 파일을 처리하기 위해 binary 파일로 변환시킴 (Ex) pyc파일

모든 text 파일도 실제는 binary 파일

ASCII/Unicode 문자열 집합으로 저장되어 사람도 읽을 수 있음

Binary 파일은 어플리케이션에 귀속돼있음.

 

Python File I/O

 

 

Python File Read

 

with 구문은 with 구문 안에서만 open하고 close가 없어도 with 구문 밖에서는 열려있지 않습니다.

 

a 는 appending 의 약자입니다.

 

파이썬의 directory 다루기

 

cwd = current work directory

 

Log 파일 생성하기

 

 

Pickle

 

파이썬의 객체를 영속화(persistence)하는 built-in 객체

데이터, object 등 실행 중인 정보를 저장 -> 불러와서 사용

저장해야하는 정보, 계산 결과 등 활용이 많음

del test를 하여도

f = open("list.pickle", "rb")
test_pickle = pickle.load(f)
test_pickle
f.close()

test_pickle
# [1, 2, 3, 4, 5]

rb(read binary) 를 통해 열 수 있습니다. 이를 영속화라고 합니다.

import pickle

class Mutltiply(object):
	def __init__(self, multiplier):
	self.multiplier = multiplier
def multiply(self, number):
	return number * self.multiplier

muliply = Mutltiply(5)
muliply.multiply(10)
# 50


f = open("multiply_object.pickle", "wb")
pickle.dump(muliply, f)
f.close()

del muliply

muliply
# NameError: name 'muliply' is not defined

f = open("multiply_object.pickle", "rb")
muliply_pickle = pickle.load(f)

muliply_pickle
#<__main__.Mutltiply at 0x1db60cdbe20>

multiply_pickle.multiply(100)
#500

위도 마찬가지로 del  muliply를 통해 제거를 하여도 pickle의 rb를 통해 영속화가 된 것을 확인할 수 있습니다.

 

Logging Handling

 

로그 남기기 - Logging

 

-프로그램이 실행되는 동안 일어나는 정보를 기록 남기기

-유저의 접근, 프로그램의 Exception, 특정 함수의 사용을 기록

-Console 화면에 출력, 파일에 남기기, DB에 남기기 등등

-기록된 로그를 분석하여 의미있는 결과를 도출 할 수 있음

-실행시점에 남겨야 하는 기록, 개발시점에서 남겨야하는 기록을 나눔

 

print vs logging

 

-기록을 print로 남기는 것도 가능

-그러나 Console 창에만 남기는 기록은 분석시 사용 불가

-때로는 레벨별(개발, 운영)로 기록을 남길 필요가 있음

-모듈별로 별도의 logging을 남길 필요도 있음

-이러한 기능을 체계적으로 지원하는 모듈이 필요함

 

logging 모듈

 

통상 유저에겐 warning 부터 warning error critical 보임

 

logging level

 

-프로그램 진행 상황에 따라 다른 Level의 Log를 출력함

-개발시점, 운영 시점마다 다른 Log가 남을 수 있도록 지원함

-Debug > INFO > WARNING > ERROR > Critical

-Log 관리시 가장 기본이 되는 설정정보

 

실제 프로그램을 실행할 땐 여러 설정이 필요

1) configparser - 파일에

2) argparser - 실행시점에

 

configparser

 

프로그램의 실행 설정을 file에 저장함

Section, Key, Value 값의 형태로 설정된 설정 파일을 사용

설정파일을 Dict Type으로 호출 후 사용

 

 

 

argparser

 

- Console 창에서 프로그램 실행시 Setting 정보를 저장함

- 거의 모든 Console 기반 Python 프로그램 기본으로 제공

- 특수 모듈도 많이 존재하지만(TF), 일반적으로 argparse를 사용

- Command-Line Option 이라고 부름

 

728x90