이 튜토리얼에서는 Python Pickle 예제에 대해 논의할 것입니다.
이전 튜토리얼에서는 Python Multiprocessing에 대해 논의했습니다.
Python Pickle은 파이썬 객체 구조를 직렬화하고 역직렬화하는 데 사용됩니다. 파이썬의 모든 객체를 피클링하여 디스크에 저장할 수 있습니다. 먼저 Python pickle은 객체를 직렬화하고 그런 다음 객체를 문자 스트림으로 변환하여이 문자 스트림에 다른 파이썬 스크립트에서 객체를 재구성하는 데 필요한 모든 정보가 포함되도록합니다. 문서에 따르면 pickle 모듈은 잘못된 또는 악의적으로 구성된 데이터에 대해 안전하지 않습니다. 그러므로 신뢰할 수없는 또는 인증되지 않은 소스로부터 받은 데이터를 unpike하면 안됩니다.
Python Pickle 덤프
이 섹션에서는 Python pickle을 사용하여 데이터를 저장하는 방법을 배우게 됩니다. 이를 위해서는 먼저 pickle 모듈을 가져와야 합니다. 그런 다음 pickle.dump()
함수를 사용하여 객체 데이터를 파일에 저장합니다. pickle.dump()
함수는 3개의 인수를 사용합니다. 첫 번째 인수는 저장하려는 객체입니다. 두 번째 인수는 write-binary
(wb) 모드로 원하는 파일을 열어서 얻은 파일 객체입니다. 세 번째 인수는 키-값 인수입니다. 이 인수는 프로토콜을 정의합니다. 두 가지 유형의 프로토콜이 있습니다 – pickle.HIGHEST_PROTOCOL과 pickle.DEFAULT_PROTOCOL. pickle을 사용하여 데이터를 덤프하는 방법을 알아보려면 샘플 코드를 참조하세요.
import pickle
# 사용자 입력을 받아 데이터 양을 가져옵니다.
number_of_data = int(input('Enter the number of data : '))
data = []
# 데이터 입력을 받습니다.
for i in range(number_of_data):
raw = input('Enter data '+str(i)+' : ')
data.append(raw)
# 데이터를 저장할 파일을 엽니다.
file = open('important', 'wb')
# 해당 파일에 정보를 덤프합니다.
pickle.dump(data, file)
# 파일을 닫습니다.
file.close()
다음 프로그램에서는 몇 가지 입력을 입력하라는 메시지가 표시됩니다. 제 경우에는 다음과 같았습니다.
Python Pickle load
피클 데이터를 검색하는 방법은 매우 간단합니다. 그냥 pickle.load()
함수를 사용하면 됩니다. 피클 로드 함수의 주요 인자는 읽기 이진(rb) 모드로 파일을 열어서 얻은 파일 객체입니다. 간단하지요! 코드를 작성하여 피클 덤프 코드를 사용하여 피클링한 데이터를 검색해 봅시다. 이해를 돕기 위해 다음 코드를 확인하세요.
import pickle
# pickled 데이터를 저장한 파일을 엽니다.
file = open('important', 'rb')
# 해당 파일에 정보를 덤프합니다.
data = pickle.load(file)
# 파일을 닫습니다.
file.close()
print('Showing the pickled data:')
cnt = 0
for item in data:
print('The data ', cnt, ' is : ', item)
cnt += 1
출력은 다음과 같습니다:
Showing the pickled data:
The data 0 is : 123
The data 1 is : abc
The data 2 is : !@#$
Python Pickle 예제
I made a short video showing execution of python pickle example programs – first to store data into file and then to load and print it. As you can see that the file created by python pickle dump is a binary file and shows garbage characters in the text editor.
Python Pickle에 대한 중요한 참고 사항
Python pickle 모듈에 대한 몇 가지 중요한 포인트는 다음과 같습니다:
- 피클 프로토콜은 파이썬에 특화되어 있으며 다른 프로그래밍 언어와의 교차 호환성이 보장되지 않습니다. 즉, 다른 프로그래밍 언어에서 유용하게 사용하기 위해 정보를 전송할 수 없을 것입니다.
- 또한 모든 파이썬 데이터 구조가 이 모듈에 의해 직렬화될 수 있는 것은 아니기 때문에 다른 버전의 Python 간의 호환성이 보장되지 않습니다.
- 최신 버전의 피클 프로토콜이 기본적으로 사용되지만 수동으로 변경하지 않는 한 보장되지 않습니다.
- 마지막으로, 공식 문서에 따르면 피클 모듈은 잘못된 또는 악의적으로 구성된 데이터에 대해 안전하지 않습니다.
그래서, 이것이 파이썬 피클 예제에 관한 전부입니다. 잘 이해하셨으면 좋겠습니다. 추가 문의 사항이 있으시면 댓글 섹션을 이용해주세요. 🙂 참조: 공식 문서
Source:
https://www.digitalocean.com/community/tutorials/python-pickle-example