일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- nlp
- algorithm
- CV
- nerf
- PRML
- math
- Python
- Depth estimation
- classification
- SSL
- dl
- FineGrained
- pytorch
- cs
- 자료구조
- 알고리즘
- 머신러닝
- Vision
- Torch
- Meta Learning
- REACT
- clean code
- web
- Front
- computervision
- 3d
- FGVC
- 딥러닝
- ML
- GAN
- Today
- Total
KalelPark's LAB
[ CLEAN CODE ] Clean Python, Pickle이란? 본문
Pickle이란?
- 텍스트 상태의 데이터가 아닌 파이썬 객체 자체를 바이너리 파일로 저장하는 것을 의미합니다.
- 텍스트 형태로 파일을 저장하는 것이 아니라, Dictionary, list, tuple과 같은 형태로 필요한 부분을 저장하는 것이다.
하지만, 문자열이 아닌 객체를 파일에 쓸 수 없기 때문에 pickle 모듈을 활용하여, 객체 자체를 binary로 저장하는 것이다.
* 무거운 텍스트 파일을 binary형태로 저장한 것이기 때문에, 필요할 때만 불러오기만 하면 되기 때문에 속도가 상당히 빠릅니다.
Pickle Module로 저장하고 불러오기
import pickle
f = open("a.pkl", "rb") # pickle 불러오기
temp = pickle.load(f)
f.close()
f = open("test.pkl", "wb") # pickle 저장하기
pickle.dump(a, f)
f.close()
* 코드를 Clean하게 하기 위해서는,
파일을 불러오면, 명시적으로 파일을 닫지 않아도, 떠나는 것이 가능한 with code를 활용하는 것이 가능합니다.
array = [1, 2, 3]
with open("test.pkl", "wb") as f:
pickle.dump(a, f)
Pandas DataFrame을 Pickle로 저장하는 것이 가능합니다.
Pickle로 저장한다면, 이전에 말씀드렸다시피, Dataframed을 불러올 때, 주로 사용하는 pd.read_csv보다 속도가 상당히 빠릅니다.
import pickle
import pandas as pd
df = pd.DataFrame({"a" : [1, 2, 3], "b" : [4, 5, 6]})
df.to_pickle("df.pkl") # pandas pickle로 저장하기
df = pd.read_pickle("df.pkl")
* Pickle을 활용할 때, 주의할 점이 있는데, Pickle라이브러리가 파일을 공유하는 사람의 Pickle라이브러리와의 버전이 서로 다르면
파일이 열리지 않는다는 것을 유의해야 합니다.
마지막 예제를 하나 더, 살펴보도록 하겠습니다.
* pickle.dump로 객체(값)을 저장할 때는, 반드시 파일모드를 "wb"로 지정해야 합니다.
b는 binary를 의미하며, 컴퓨터가 처리하는 파일 형식으로 편집기로 열어도 알아보기 힘듭니다.
import pickle
name = "Kalel"
age = 24
address = "Seoul"
scores = {'korean': 90, 'english': 95, 'mathematics': 85, 'science': 82}
with open("wongis.p", "wb") as file:
pickle.dump(name, file)
pickle.dump(age, file)
pickle.dump(address, file)
pickle.dump(scores, file)
'Python > CLEAN CODE' 카테고리의 다른 글
[ CLEAN CODE ] Clean Python, Dictionary 활용하기 (0) | 2023.01.02 |
---|---|
[ CLEAN CODE ] Clean Python, Property 활용하기 (0) | 2023.01.01 |
[ CLEAN CODE ] Clean Python, Argparse 유용하게 활용하기 (0) | 2022.12.30 |
[ CLEAN CODE ] Clean Python, __future__이란? (0) | 2022.12.28 |
[CLEAN CODE] Clean Python, tqdm 활용하기 (0) | 2022.12.19 |