반응형
1. Exception Handling(예외처리)
- 예외가 발생할 경우 후속조치 등 대처필요
- Exception을 잡게되면 프로그램 코드는 계속 진행하지만 Exception을 잡지 못하고 에러가 발생하게 되면 프로그램이 멈춤
try:
# 예외 발생 가능 코드
except <Exception Type>:
# 예외 발생시 대응하는 코드
except Exception as e:
print(e) -> 위에서 잡아내지 않은 에러에 대해 마지막에 모든 Exception 처리
else:
# 예외가 발생하지 않을 때 동작하는 코드
finally:
# 예외와 상관없이 실행되는 코드
- raise
- 강제로 에러를 만들어냄
- raise <Exception Type> 예외정보
- raise ValueError("숫자가아닙니다")
- assert
- 특정 조건에 만족하지 않을 경우 예외발생
- assert 뒤에는 true or false가 나와야하고 false가 나오면 AssertionError를 발생시키고 중단시킴
def get_binary_number(my_num): assert isinstance(my_num, int) ...
- assert 뒤에는 true or false가 나와야하고 false가 나오면 AssertionError를 발생시키고 중단시킴
- 특정 조건에 만족하지 않을 경우 예외발생
2. File
- 메모장으로 열리면 txt파일이고, 열리지 않으면 binary파일임
- binary 파일은 컴퓨터만 이해할 수 있는 형태인 이진법형식으로 저장된파일 (엑셀,워드 등)
Read
1) file read
f = open("my_note.txt", "r")
contents = f.read()
f.close()
2) with와 indent사용하면 자동으로 close됨
with open("my_note.txt", "r") as my_file:
contents = my_file.read()
print(contents)
3) readlines()는 한줄씩(\n) 가져와서 한번에 메모리에 올림
f = open("my_note.txt", "r")
contents = f.readlines()
f.close()
4) readline()는 한줄씩(\n) 메모리에 올림
f = open("my_note.txt", "r")
contents = f.readline()
f.close()
Write
- windows는 cp949를 사용하게됨
- 데이터를 저장할 때는 utf8로 저장하자 (다른 운영체제와의 호환을위해)
- 파일안에 데이터가 있다면 내용이 날라가고 새로 쓰게됨
f = open("my_note.txt", "w", encoding="utf8")
f.write("첫번째줄입니다")
f.close()
Append
- 파일의 맨 뒷부분에 추가함
f = open("my_note.txt", "a", encoding="utf8")
f.write("두번째줄입니다")
f.close()
OS module
- 폴더생성
import os try: os.mkdir("abc) except FileExistsError as e: -> 또는 if os.path.exists("abc") print("Already created")
- 파일 옮기기
- shutill
import shutil source = "test.txt" dest = os.path.join("abc_dir","abc.txt") shutil.copy(source, dest)
- pathlib
import pathlib cwd = pathlib.Path.cwd() # 상위 경로 cwd.parent #현재 위치 형제 파일들 list(cwd.glob("*"))
- pickle
- 파이썬의 객체를 영속화 하는 built-in 객체
- 데이터, object등 실행중 정보를 저장 -> 불러와서 사용
- 저장해야하는 정보, 계산결과(모델) 등 많이 활용됨
import pickle # 1) write f = open("list.pickle", "wb") -> write binary test = [1,2,3,4,5] pickle.dump(test,f) f.close() # 2) read f = open("list.pickle", "rb") -> read binary saved_pickle = pickle.load(f) f.close()
3. Logging
- 프로그램이 실행되는 동안 정보를 기록으로 남김
- print문을 사용해서 남기면 저장이 안되기 때문에 따로 저장해야함
- 파일에 저장, DB에 저장 등
- 개발 시점에 따라 다른 log가 출력되게 설정해야함
- logging 모듈
- 기본적으로 warning레벨부터 나옴
import logging logger = logging.getLogger("main") logging.basicConfig(level=logging.DEBUG) -> 디버그부터 시작한다 logger.setLevel(logging.INFO) -> INFO부터시작 steam_handler = logging.FileHandler("my.log", mode="w", encoding="utf8") -> mode a는 append logger.addHandler(steam_handler) #formatter = logging.Formatter("%(asctime)s %(levelname)s %(process)d %(message)s") logger.debug("틀렸음") -> 개발시 처리기록을 남겨야하는 정보 logger.info("확인해봐") -> 처리가 진행되는 동안의 정보 logger.warning("조심해야해") -> 처리는 가능하나 원래 개발시 의도치 않은 정보가 들어왔을 때 logger.error("에러났음") -> 잘못된 처리로 인해 에러가 났으나 프로그램은 동작할 수 있음 logger.critical("아예 꺼짐") -> 잘못된 처리로 데이터 손실이나 프로그램 중단
4. Python config
1) configparser - 파일에 설정
- 프로그램의 실행 설정을 file에 저장
- Section, key, value 형태로 설정된 파일을 사용
- 설정 파일을 Dict Type으로 호출 후 사용
- key value를 저장할 때 : , = 자유
# my_config.cfg
[SectionOne]
Status:Single
Name:Iniesta
BackNumber:8
[SectionTwo]
From = SPAIN
# load_config.py
import configparser
config = configparser.ConfigParser()
config.read("my_config.cfg")
for k in config["SectionOne"]:
value = config["SectionOne"][k]
print(k, v)
2) argparser - 실행시점에 설정
- Console 창에서 프로그램 실행시 Setting 정보를 저장
- 거의 모든 Console기반 Python 프로그램 기본으로 제공
- 특수 모듈도 많이 존재하지만 일반적으로 argparse를 사용
- Command-Line Option 이라고 부름
import argparse
parser = argparse.ArgumentParser(description="Sum Two Integers")
# parser.add_argument(짧은이름, 긴이름, dest=표시명, help=설명, type=타입)
parser.add_argument("-a", "--a_value", dest="a_value", help="A Integer", type=int)
parser.add_argument("-b", "--b_value", dest="b_value", help="B Integer", type=int)
args = parser.parse_args()
print(args)
print(args.a)
print(args. b)
반응형
'부스트캠프 AI Tech 2기 > Precourse' 카테고리의 다른 글
Numpy (0) | 2021.07.20 |
---|---|
Python Data Handling (0) | 2021.07.19 |
Python Module, Package (0) | 2021.07.18 |
Python OOP(Object Oriented Programming) (0) | 2021.07.18 |
Python Pythonic (0) | 2021.07.18 |