대용량 데이터 목록 및 사전 데이터를 저장하고 읽는 Python 피클 방법

파이썬 피클 스토리지와 대용량 데이터 목록 및 사전 읽기에 대해 소개하겠습니다.

비교적 많은 양의 데이터가있는 목록 및 사전의 경우 파일 크기를 줄이기 위해 데이터 패킷으로 처리하여 호출 할 수 있습니다.

#列表
  #存储
  list1 = [123,'xiaopingguo',54,[90,78]]
  list_file = open('list1.pickle','wb')
  pickle.dump(list1,list_file)
  list_file.close()
  
  #读取
  list_file = open('list1.pickle','rb')
  list2 = pickle.load(list_file)
  print(list2)
  
#字典
  #存储
  list3 = {
    
    '12': 123, '23': 'xiaopingguo', '34': 54, '45': [90, 78]}
  list3_file = open('list3.pickle', 'wb')
  pickle.dump(list3, list3_file)
  list3_file.close()
  # # 读取
  list3_file = open('list3.pickle', 'rb')
  list3 = pickle.load(list3_file)
  print(list3)
 
  print(list3['23']

추신 : 피클을 사용하여 빅 데이터를 저장하는 파이썬을 살펴 보겠습니다.

최근에 데이터를 처리하고 있는데 사전 형의 거대한 중간 변수가 있는데, 장래에 오래 사용하고 빈도가 높기 때문에 향후 언제든지 쉽게 읽을 수 있도록 matlab과 같은 데이터로 저장하는 것을 고려하고 있습니다. .

물론, 피클을 사용하여 데이터를 저장하는 방법을 생각합니다. 이것은 파이썬 환경에서 데이터를 저장하는 가장 일반적이고 간단한 방법이기 때문입니다.
파이썬에 데이터를 저장하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 pickle 모듈을 사용하는 것입니다. 물론 json, txt 및 기타 형식으로 저장하는 다른 방법이 있습니다. 에 관해서

판다, h5 등의 또 다른 표현 ~

피클 모듈 소개

pickle 모듈은 파이썬 객체 구조를 직렬화 및 역 직렬화하기위한 바이너리 프로토콜을 구현합니다. 직렬화 작업 "피클 링"은 파이썬 개체 계층 구조를 바이트 스트림으로 변환하는 프로세스이며, 역 직렬화 작업 "피클 링"은 바이트 스트림을 다시 개체 계층 구조로 변환하는 프로세스입니다.

피클은 파이썬에 고유하므로 파이썬이 아닌 프로그램은 피클 된 객체를 재구성하지 못할 수 있습니다. 내 작업에서 문제, 즉 내가 sklearn으로 훈련하고 pickle로 저장 한 기계 학습 모델에 직면했습니다. 엔지니어링 동료는 Java를 사용하여이 모델을 호출 할 수 없습니다. 임시 방법은 동료를 갖는 것입니다. 피클 소스 코드를 읽고 자바를 사용하여 단계별로 역 직렬화합니다.

피클 사용 기술

가장 간단한 코드의 경우 dump () 및 load () 함수로 충분합니다.

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import pickle
a = 1
# 保存
with open('data.pickle', 'wb') as f:
  pickle.dump(data, f)
# 读取
with open('data.pickle', 'rb') as f:
  b = pickle.load(f)

그러나 pickle의 문서를 읽으면 프로토콜이라는 매개 변수가 있음을 알 수 있습니다. 매개 변수 프로토콜은 직렬화 모드 (피클 프로토콜)를 나타냅니다. 기본값은 python2.X에서 0, python3.X에서 3입니다. 요컨대, 다른 파이썬 버전은 다른 최고 프로토콜에 해당하며 프로토콜 값이 클수록 사용되는 프로토콜 버전이 높아집니다. 그림에서 알 수 있듯이

그렇다면 프로토콜 수정의 영향은 무엇입니까? 프로토콜 값이 클수록 덤프 속도가 빨라지고 지원되는 데이터 유형이 많을수록 저장된 파일이 차지하는 공간이 작아지고 기타 최적화가 수행됩니다. 예를 들어 python3.4에서 새 프로토콜 버전 4는 매우 빅 데이터는 직렬화됩니다. 따라서 가능하면 프로토콜 매개 변수 값으로 가장 높은 프로토콜 버전을 선택하고 설정하십시오 protocol=pickle.HIGHEST_PROTOCOL.

그런 다음 위의 코드를 다음과 같이 변경할 수 있습니다.

import pickle
a = 1
# 保存
with open('data.pickle', 'wb') as f:
  pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL)
# 读取
with open('data.pickle', 'rb') as f:
  b = pickle.load(f)

작은 데이터의 경우 영향이 크지 않을 수 있습니다.

그러나 빅 데이터를 직렬화해야 할 때는이 피클 트릭을 기억하십시오.

요약하자면

위는 에디터에서 소개 한 파이썬 피클에서 대용량 데이터 목록과 사전을 저장하고 읽는 방법입니다.

おすすめ

転載: blog.csdn.net/sinat_38682860/article/details/109312553