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

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

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

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



답변

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

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

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

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


답변

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

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


답변