# 01_pickle.py
# WD 리셋
import os, pickle
os.chdir(os.path.dirname(__file__))
print(os.getcwd()) #현재 WD확인
# 데이터
classNumber = 5
member = ["사과", "바나나", "딸기"]
teacher = {
"name" : "한솔",
"lang" : "Python"
}
# pickle로 저장
save_data = [classNumber, member, teacher]
print(save_data)
# 텍스트형 데이터가 아닌 데이터들은 바이너리(b)로 기입해야 합니다.
with open("school_data.pickle", "wb") as fp:
#pickle(모듈에서).dump(덮어씌우겠다)
pickle.dump(save_data, fp)
코드를 실행하면 school_data.pickle가 생성되는것을 볼 수 있습니다.
이제 생성된 school_data.pickle를 열어보면
파일은 생성됬지만 읽을 수 없는 것을 확인할 수 있습니다.
이것을 읽기위해서는 pickle를 통해 load해야합니다.
# 02_load_pickle.py
# WD 리셋
import os, pickle
os.chdir(os.path.dirname(__file__))
print(os.getcwd()) #현재 WD확인
# pickle 가져오기
with open("school_data.pickle", "rb") as fp:
load_date = pickle.load(fp)
print("해당 코드 실행 됨")
print(load_date)
try + except
/ try + finally
/ try + except + finally
if문과 비슷한 구조를 가졌습니다.
오류 제어문 예시1
# 03_try.pickle.py
# WD 리셋
import os, pickle
os.chdir(os.path.dirname(__file__))
print(os.getcwd()) #현재 WD확인
# pickle 가져오기
try:
with open("school_data.pickle", "rb") as fp:
load_date = pickle.load(fp)
except:
load_date = [] # 오류가 출력되지 않도록 대체할 데이터를 넣음
finally:
print("값 가져오기 실행 완료")
print("해당 코드 실행 됨")
print(load_date)
오류 제어문 예시2
try:
print("시도 코드")
n1 = int('3')
n2 = int('3.0') # 오류
except ValueError:
print("값 에러 발생시 실행되는 영역")
except TypeError:
print("타입 에러 발생시 실행되는 영역")
except:
print("그 외 에러 발생시 실행되는 영역")
finally:
print("성공/실패 상관없이 무조건 실행되는 영역입니다.")
print(n1)
이런식으로 특정 오류마다 다른 코드를 작동시킬 수 있습니다.
# try를 이용한 최대 시도 횟수 코드
# if문과 비슷하지만 조건이 True/False인가? 오류 발생인가?
# 최대 시도 횟수 5번 제한 코드
age = -1
attemp = 0
while attemp < 5:
attemp += 1
try:
age = int(input("나이를 입력해주세요(정수) : "))
break
except:
print("올바른 값이 아닙니다. 시도횟수 : {}".format(attemp))
print("프로그램 종료")