Day_2 05. File / Exception / Log Handling

작성일

2 분 소요

File / Exception / Log Handling

1. Exception

1.1 예상 가능한 예외

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

1.2 예상 불가능한 예외

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

1.3 예외 처리

  • 예외가 발생할 경우 후속 조치 등 대처 필요
  • if 문 or Exception 발생

2. Exception Handling

  • try ~ except 문법
try:
  예외 발생 가능 코드
except <Exception Type>:
  예외 발생시 대응하는 코드
  • try ~ except ~ else

  • try ~ except ~ finally

  • raise 구문
    • 필요에 따라 강제로 Exception을 발생
    • raise (예외정보)
  • assert 구문
    • 특정 조건에 만족하지 않을 경우 예외 발생
    • assert 예외조건

3. File Handling

3.1 파일의 종류

  • 기본적인 파일 종류로 text파일과 binary파일로 나눔
  • 컴퓨터는 text파일을 처리하기 위해 binary 파일로 변환시킴
  • 모든 text파일도 실제는 binary파일 ASCII/Unicode 문자열 집합으로 저장되어 사람이 읽을 수 있음

  • Text 파일은 인간도 이해할 수 있는 형태인 문자열 형식
  • Binary 파일은 컴퓨터만 이해할 수 있는 형태인 이진(법)형식

3.2 Python File I/O

  • 파이썬은 파일 처리를 위해 ‘open’ 키워드를 사용
f = open("<파일이름>", "접근 모드")
f.close
  • 접근모드 : ‘r’, ‘w’, ‘a’

  • with 구문

with open('i_have_a_dream.txt', 'r') as my_file:
  contents = my_file.read()
  print(type(contents), contents)

3.3 파이썬의 File Read

  • readlines() : 한 줄씩 읽어 list Type으로 반환함
  • readline() : 실행 시 마다 한 줄 씩 읽어 오기

3.4 파이썬의 File Write

  • mode 는 “w”, encoding=”utf8”
  • mode 는 “a” 는 추가모드

3.5 파이썬의 directory 다루기

  • os 모듈을 사용하여 Directory 다루기
import os
os.mkdir('log')
  • 디렉토리가 있는지 확인하기
    if not os.path.isdir('log'):
    os.mkdir('log')
    
  • 경로 합치기
    os.path.join('abc', 'raki.txt')
    
  • 최근에는 pathlib 모듈을 사용하여 path를 객체로 다룸
import pathlib
cwd = pathlib.Path.cwd()  # 현재 디렉토리
cwd.parent  # 부모 디렉토리
cwd.parent.parent # 부모의 부모 디렉토리

3.6 Pickle

  • 파이썬의 객체를 영속화(persistence)하는 built-in 객체
  • 데이터, object 등 실행중 정보를 저장 -> 불러와서 사용
  • 저장해야하는 정보, 계산 결과(모델) 등 활용이 많음
with open(<파일이름>, 'wb') as f:
  pickle.dump(file, f)
  
with open(<파일이름>, 'rb') as f:
  file = pickle.load(f)

4. Log Handling

4.1 로그 남기기 - Logging

  • 프로그램이 실행되는 동안 일어나는 정보를 기록을 남기기
  • 유저의 접근, 프로그램의 Exception, 특정 함수의 사용
  • Console 화면에 출력, 파일에 남기기, DB에 남기기 등등
  • 기록된 로그를 분석하여 의미있는 결과를 도출 할 수 있음
  • 실행시점에서 남겨야 하는 기록, 개발시점에서 남겨야하는 기록

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

4.2 loggin 모듈

  • Python의 기본 Log 관리 모듈
import logging

logging.debug("틀렸잖아!")
logging.info("확인해!")
logging.warning("조심해!")
logging.error("에러났어!")
logging.critical("망했다...")
  • logging level
    • DEBUG > INFO > WARNING > ERROR > Critical

    • debug : 개발시 처리 기록을 남겨야하는 로그 정보를 남김
    • info : 처리가 진행되는 동안의 정보를 알림
    • warning : 사용자가 잘못 입력한 정보나 처리는 가능하나 원래 개발시 의도치 않는 정보가 들어왔을때 알림
    • error : 잘못된 처리로 인해 에러가 났으나, 프로그램은 동작할 수 있음을 알림
    • critical : 잘못된 처리로 데이터 손실이나 더이상 프로그램이 동작할 수 없음을 알림
  • configparser
    • 프로그램의 실행 설정을 file에 저장함
    • Section, Key, Value 값의 형태로 설정된 설정 파일을 사용
    • 설정파일을 Dict Type으로 호출후 사용
  • argparser
    • Console 창에서 프로그램 실행시 Setting 정보를 저장함
    • 거의 모든 Console 기반 Python 프로그램 기본으로 제공
    • 특수 모듈도 많이 존재하지만(TF), 일반적으로 argparse를 사용
    • Command-Line Option 이라고 부름

    • 커맨드라인 옵션이라고도 부름

댓글남기기