[인공지능(AI) 기초 다지기] - File / Exception / Log Handling

Jeonghwan Kim·2022년 12월 11일
0

부스트코스 강의 인공지능(AI) 기초 다지기 중 'File / Exception / Log Handling'을 정리한 내용이다.

Exception

  • 예상 가능한 예외: 발생 여부를 사전에 인지할 수 있는 예외, 개발자가 반드시 명시적으로 정의해야 함

  • 예상 불가능한 예외: 인터프리터 과정에서 발생하는 예외, 개발자의 실수, 리스트의 범위를 넘어가는 값 호출 등

  • 예외가 발생할 경우 Exception Handling을 해줌

Exception Handling

  • try ~ except 문법

    • try에 코드를 작성하고 except에 에러 발생시 실행할 코드를 작성함
  • raise 구문: 필요에 따라 강제로 Exception을 발생

  • assert 구문: 특정 조건에 만족하지 않을 경우 예외 발생

File Handling

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

  • File from wiki: 컴퓨터 등의 기기에서 의미있는 정보를 담는 논리적인 단위

  • 파일의 종류

    • text 파일: 인간도 이해할 수 있는 문자열 형식으로 저장된 파일, ex) 메모장

    • binary 파일: 컴퓨터만 이해할 수 있는 형태인 이진법 형식으로 저장된 파일, ex) 엑셀 파일

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

  • text파일도 실제는 binary 파일로, ASCII/Unicode 문자열 집합으로 저장되어 사람이 읽을 수 있음

  • 파일 처리를 위해 "open" 키워드 사용

  • python의 file read

  • python의 file write

  • python의 directory 다루기

  • Log 파일 생성하기

  • Pickle

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

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

    • 저장해야하는 정보, 계산 결과(모델) 등 활용이 많음

Logging Handling

  • 로그 남기기 - Logging

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

    • 유저의 접근, 프로그램의 Exception, 특정 함수의 사용

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

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

    • 실행시점에서 남겨야하는 기록, 개발시점에서 남겨야 하는 기록

    • 기록을 print로 남기는 것도 가능하지만 Console 창에만 남기는 기록은 분석시 사용불가

    • 레벨별(개발, 운영)로 기록을 남길 필요가 있고, 모듈별로 별도의 logging을 남길 필요도 있음

  • logging 모듈

  • logging level

    • 프로그램 진행 상황에 따라 다른 level의 log를 출력함

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

    • DEBUG > INFO > WARNING > ERROR > Critical

    • log 관리시 가장 기본이 되는 설정 정보

  • configparser

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

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

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

  • argparser

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

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

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

    • Command-Line Option이라고 부름

  • logging formmater

    • log의 결과값의 format을 지정해줄 수 있음

0개의 댓글