반응형
피클 파일에 추가해야합니다 (한 번에 전체 사전을 가지고 있지 않기 때문에). 따라서 동일한 작업을 수행하기 위해 다음 코드를 작성했습니다.
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
반응형
'파이썬' 카테고리의 다른 글
파이썬 새 폴더를 만드는 방법은 무엇입니까? (0) | 2021.02.04 |
---|---|
파이썬 What is the equivalent of "zip()" in Python's numpy? (0) | 2021.02.04 |
파이썬 Is there a zip-like function that pads to longest length in Python? (0) | 2021.02.04 |
파이썬 gunicorn autoreload on source change (0) | 2021.02.04 |
파이썬 예외를 발견하면 유형, 파일 및 행 번호를 어떻게 얻습니까? (0) | 2021.02.04 |
댓글