본문 바로가기
파이썬

파이썬 How to use append with pickle in python?

by º기록 2021. 2. 4.
반응형

피클 파일에 추가해야합니다 (한 번에 전체 사전을 가지고 있지 않기 때문에). 따라서 동일한 작업을 수행하기 위해 다음 코드를 작성했습니다.

 import pickle
 p={}
 p[1]=2
 q={}
 q['a']=p
 p={}
 p[2]=0
 pickle.dump(q, open("save12.p","ab"))
 f={}
 f['b']=p
 pickle.dump(f,open("save12.p","ab"))

그러나 피클 파일을로드 할 때 사전 f 값을 찾지 못합니다. ?????

누군가 피클 파일에 추가하는 방법에 대해 제안 해 주시겠습니까 ???

또한 'dbm'과 같은 데이터베이스가 Windows에서 작업 중이므로 필요에 맞게 작동하지 않습니다.

 

해결 방법

 

피클 스트림은 완전히 독립적이므로 언 피클 링은 한 번에 하나의 개체를 언 피클 링합니다.

따라서 여러 스트림을 언 피클하려면 EOFError가 발생할 때까지 파일을 반복적으로 언 피클해야합니다.

>>> f=open('a.p', 'wb')
>>> pickle.dump({1:2}, f)
>>> pickle.dump({3:4}, f)
>>> f.close()
>>> 
>>> f=open('a.p', 'rb')
>>> pickle.load(f)
{1: 2}
>>> pickle.load(f)
{3: 4}
>>> pickle.load(f)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
EOFError

언 피클 코드는 다음과 같을 수 있습니다.

import pickle
objs = []
while 1:
    try:
        objs.append(pickle.load(f))
    except EOFError:
        break

 

참조 페이지 https://stackoverflow.com/questions/12761991

 

 

반응형

댓글