Python에서 Pickling을 한다는건 어떤 Object를 serializing해서 어딘가에 저장하고, 그걸 다시 꺼내서 de-serializing하는 것을 pickling이라고 합니다. 어떤 오브젝트를 시리얼라이징함으로 인해서 파일에 저장할수 있게 하는거죠. 파이썬에 있는 어떤 Object든지 피클링을할수 있어요. 다시말해 피클링은 파이썬 오브젝트들 예를 들면 list, dict같은 애들을 문자열로 만들어 주는 작업을 말합니다. 이 작업은 문자열로 만들었던 정보가 다시 오브젝트로 재건되는데 필요한 모든 정보를 해당 문자열 안에 가지고 있어야합니다. 아래는 어떤 오브젝트를 피클링해서 저장하고, 다시 가져와서 오브젝트로 만들어 주는 스크립트입니다.
import pickle
def storeData():
# initializing data to be stored in db
Omkar = {'key' : 'Omkar', 'name' : 'Omkar Pathak',
'age' : 21, 'pay' : 40000}
Jagdish = {'key' : 'Jagdish', 'name' : 'Jagdish Pathak',
'age' : 50, 'pay' : 50000}
# database
db = {}
db['Omkar'] = Omkar
db['Jagdish'] = Jagdish
# Its important to use binary mode
dbfile = open('examplePickle', 'ab')
# source, destination
# print(pickle.dumps(db))
pickle.dump(db, dbfile)
dbfile.close()
def loadData():
# for reading also binary mode is important
dbfile = open('examplePickle', 'rb')
# print(pickle.loads(dbfile))
db = pickle.load(dbfile)
for keys in db:
print(keys, '=>', db[keys])
dbfile.close()
if __name__ == '__main__':
storeData()
loadData()
위의 코드를 실행하면 아래와 같이 문자열로 저장되어있던 내용이 다시 오브젝트로 로딩이 되어서 보여집니다.
Omkar => {'age': 21, 'name': 'Omkar Pathak', 'key': 'Omkar', 'pay': 40000}
Jagdish => {'age': 50, 'name': 'Jagdish Pathak', 'key': 'Jagdish', 'pay': 50000}
Source: https://www.geeksforgeeks.org/understanding-python-pickling-example