웹사이트 검색

파이썬 피클 예제


이 자습서에서는 Python Pickle 예제에 대해 설명합니다. 이전 튜토리얼에서 Python Multiprocessing에 대해 논의했습니다.

파이썬 피클

Python Pickle은 Python 개체 구조를 직렬화역직렬화하는 데 사용됩니다. 파이썬의 모든 개체는 디스크에 저장할 수 있도록 절일 수 있습니다. 처음에 Python pickle은 객체를 직렬화한 다음 객체를 문자 스트림으로 변환하여 이 문자 스트림에 다른 Python 스크립트에서 객체를 재구성하는 데 필요한 모든 정보가 포함되도록 합니다. 문서에 따르면 pickle 모듈은 잘못되었거나 악의적으로 구성된 데이터로부터 안전하지 않습니다. 따라서 신뢰할 수 없거나 인증되지 않은 소스에서 받은 데이터를 절대 언피클하지 마십시오.

파이썬 피클 덤프

이 섹션에서는 Python pickle을 사용하여 데이터를 저장하는 방법에 대해 알아봅니다. 그러기 위해서는 먼저 pickle 모듈을 가져와야 합니다. 그런 다음 pickle.dump() 함수를 사용하여 개체 데이터를 파일에 저장합니다. pickle.dump() 함수는 3개의 인수를 사용합니다. 첫 번째 인수는 저장하려는 개체입니다. 두 번째 인수는 write-binary(wb) 모드에서 원하는 파일을 열어서 얻는 파일 개체입니다. 세 번째 인수는 키-값 인수입니다. 이 인수는 프로토콜을 정의합니다. 프로토콜에는 pickle.HIGHEST_PROTOCOL과 pickle.DEFAULT_PROTOCOL의 두 가지 유형이 있습니다. pickle을 사용하여 데이터를 덤프하는 방법을 알아보려면 샘플 코드를 참조하세요.

import pickle

# take user input to take the amount of data
number_of_data = int(input('Enter the number of data : '))
data = []

# take input of the data
for i in range(number_of_data):
    raw = input('Enter data '+str(i)+' : ')
    data.append(raw)

# open a file, where you ant to store the data
file = open('important', 'wb')

# dump information to that file
pickle.dump(data, file)

# close the file
file.close()

파이썬 피클 로드

절인 데이터를 검색하는 단계는 매우 간단합니다. 그렇게 하려면 pickle.load() 함수를 사용해야 합니다. 피클 로드 함수의 주요 인수는 읽기 바이너리(rb) 모드에서 파일을 열어서 얻는 파일 객체입니다. 단순한! 그렇죠? 피클 덤프 코드를 사용하여 피클한 데이터를 검색하는 코드를 작성해 보겠습니다. 이해를 위해 다음 코드를 참조하십시오.

import pickle

# open a file, where you stored the pickled data
file = open('important', 'rb')

# dump information to that file
data = pickle.load(file)

# close the 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에 대한 중요 참고 사항

파이썬 피클 모듈에 대한 몇 가지 중요한 사항은 다음과 같습니다.

  1. pickle 프로토콜은 Python에만 적용되며 언어 간 호환이 보장되지 않습니다. 이것은 다른 프로그래밍 언어에서 유용하게 만들기 위해 정보를 전송할 수 없다는 것을 의미합니다.
  2. 모든 Python 데이터 구조가 모듈에 의해 직렬화될 수 있는 것은 아니기 때문에 서로 다른 Python 버전 간의 호환성도 보장되지 않습니다.
  3. 수동으로 변경하지 않는 한 최신 버전의 pickle 프로토콜이 기본적으로 사용됩니다.
  4. 마지막으로 문서에 따르면 pickle 모듈은 잘못되었거나 악의적으로 구성된 데이터로부터 안전하지 않습니다.

이것이 파이썬 피클 예제에 관한 전부입니다. 잘 이해하시길 바랍니다. 추가 문의사항은 댓글란을 이용해주세요. :) 참조: 공식 문서