DS and stats

[Python] File / Exception / Log Handling 본문

개인공부

[Python] File / Exception / Log Handling

으르미 2022. 8. 8. 02:00

생각보다 개발을 하거나 파일을 불러올 때, 여러 상황에서 예기치 못한 경고나 오류가 뜨는 경우가 많다.

1, 2학기 수업을 들으면서 applied ds수업에서도 예외처리가 항상 평가 기준에 들어가 있을 정도로

오류나 예외를 처리하는데 중점을 두고 있는데

처음에는 우선 나는 알아볼 수 있고, 내 컴퓨터에서는 괜찮으니까~ 하고 넘어갈 수 있었지만

친구들 노트북으로 각자 사양에 맞게 테스트를 해봤을 때 깨지는 경우가 있어서 점점 관심이 생겼다. 

 

그러던 중에 네이버 부트코스를 보게 되서 따로 내용을 정리해서 

기억하고 두고 두고 써먹을까 한다. 

 

* Exception Handling

기본적인 try ~ except 문법 (예상가능한 범위의 예외일때)

try:

    예외 발생 가능 코드 

except:

    예외 발생시 대응하는 코드

 

-> 권장하는 경우

- 0으로 숫자를 나눌 때 예외처리

ZeroDivisionError

Built-in Exception

- IndexError

- NameError

- ZeroDivisionError

- ValueError

- FileNotFoundError

 

전체 exception을 잡는 건 협업하는 데 있어서 어디서 발생하는 건지 파악하기 힘드니까 권장하지는 않음!

+ finally (optional)

코드 마지막에 위치하며, 문제가 없으면 출력된다.

 

필요에 따라 강제로 exception을 발생할 때: raise 예외정보

이 경우, 23.3을 입력했더니 정수값이 아니므로 오류를 발생시킴.

 

assert isinstance(decimal_number, int): T/F로 반환함

 

** File handling

- 기본적인 파일 종류

Binary File Text File
컴퓨터만 이해할 수 있는 형태인 이진형식으로 저장된 파일 문자열 형식
메모장으로 열었을 때 해설 불가 내용 확인 가능
엑셀, 워드 등 메모장에 저장된 파일, HTML, 파이썬 코드 파일 등

 

파이썬은 파일처리를 위해 "open"키워드를 사용함(r: 읽기, w:쓰기, a: 추가)

- read(): 모든 내용을 한꺼번에 불러옴

- readline(): 한줄 씩 리스트로 불러옴

 

with arguement와 함께 사용하면 indentation이 되어 있는 구간은 다 적용이 되는데

Indentation 신경쓸게 많으므로 개인적으로는 잘 안쓰게 될 것 같다. 

약간 SQL에서 with구문이랑 역할은 비슷한 듯?

 

OS 모듈을 이용해서 directory를 다룰 수 있다. 

* exists() = isdir() 

 

최근에는 pathlib을 통해서 path를 객체로 다룸

- 윈도우와 맥 os에 따라서 path표기법이 다른데 이걸 통일해주는 장점이 있다. 

pathlib.Path.cwd() : 현재 디렉토리를 조회

cwd.parent : 상위의 디렉토리를 조회할 수 있음

 

Logging

  • 프로그램이 실행되는 동안 일어나는 정보를 기록에 남기기
  • 유저의 접근, exception, 특정 함수의 사용
  • 콘솔화면에 출력, 파일에 남기기, db에 남기기 등등
  • 기록된 로그를 분석하여 의미있는 결과를 도출할 수 있음. 
  • 어느 시점에 남겨져 있냐에 따라 의미가 다를 수 있음. 

최근에 데이터 분석가 공고를 보면 로그를 분석해본 경험을 물어보는 경우가 많은 것 같다. 

사용자의 행동 패턴을 분석하고, 서비스를 향상시키는 데 유의미한 정보를 얻을 수 있을 것으로 예상된다.

 

logging 모듈

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

가장 기본이 되는 설정 정보를 잘 관리해야함. 

Level  
debug 개발 시 처리 기록을 남겨야하는 로그 정보를 남김
info 처리가 진행되는 동안의 정보
warning 사용자가 잘못 입력한 정보나 처리는 가능하나, 원래 개발 시 의도치 않는 정보가 들어왔을 때 알림
error 잘못된 처리로 인해 에러가 났으나, 프로그램은 동작할 수 있음을 알림
critical 잘못된 처리나 데이터 손실이나 더이상 프로그램이 동작할 수 없음을 알림

 

이 설정정보를 관리하기 위해서

1) configparser: 파일에

  • key-value형식으로 저장해야 함(: 이나 = 사용)

2) argparser: 실행 시점에

  • 콘솔 창에서 프로그램 실행할 때 setting 정보를 저장
  • built-in으로 제공
  • command-line option이라고 부름

 

출처: https://www.boostcourse.org/ai100/lecture/739173?isDesc=false (부트코스: 인공지능(AI) 기초 다지기)

'개인공부' 카테고리의 다른 글

[DS/DA] 면접 준비하기  (1) 2022.08.17
딥러닝 학습방법 이해하기  (0) 2022.08.10
Comments