ValueError : unsupported pickle protocol : 3, python2 pickle can not load the file dumped by python 3 pickle?


101

피클을 사용하여 파이썬 3에서 파일을 덤프하고 피클을 사용하여 파이썬 2에서 파일을로드하면 ValueError가 나타납니다.

그래서 파이썬 2 피클은 파이썬 3 피클에 의해 덤프 된 파일을로드 할 수 없습니까?

내가 원한다면? 수행하는 방법?


5
이미 작성된 절인 파일로
인해

답변:


158

Python 3에서 더 낮은 프로토콜 번호로 절인 데이터를 작성해야합니다. Python 3에서는 해당 번호가 포함 된 새 프로토콜을 도입 3했으며 기본값으로 사용하므로 2Python 2에서 읽을 수 있는 값으로 다시 전환 합니다.

에서 protocol매개 변수를 확인하십시오 pickle.dump. 결과 코드는 다음과 같습니다.

pickle.dump(your_object, your_file, protocol=2)

더 없습니다 protocol에서 매개 변수 pickle.load때문에 pickle파일에서 프로토콜을 결정할 수는.


54

Pickle은 protocols데이터를 바이너리 스트림으로 변환하기 위해 다른 것을 사용 합니다.

3python 2에서 데이터를로드하려면 python 3에서보다 낮은 프로토콜 을 지정해야합니다 . protocol를 호출 할 때 매개 변수를 지정할 수 있습니다 pickle.dump.


10
나중에 참조하기 위해 5이전 버전과 호환되지 않는 Python 3.8에도 도입 된 프로토콜 이 있습니다.
Farzad Abdolhosseini

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.