2014-09-15 15 views
45

Tôi sử dụng dưa để kết xuất tệp trên trăn 3 và tôi sử dụng dưa để tải tệp lên trăn 2, ValueError xuất hiện.ValueError: giao thức pickle không được hỗ trợ: 3, pickle python2 không thể tải các tập tin được bán phá giá bởi python 3 dưa?

Vì vậy, trăn 2 dưa chua không thể tải tệp được bán bằng python 3 dưa chua?

Nếu tôi muốn? Làm thế nào để làm gì?

+1

Nếu bạn bị kẹt với các tệp đã được viết sẵn, hãy xem: http://stackoverflow.com/questions/34571063/i-have-pickled-files-using-protocol-3-in-python3-and- bây giờ-tôi-cần-để-tháo-the/34571081 # 34571081 – rysqui

Trả lời

74

Bạn nên ghi dữ liệu đã chọn bằng số giao thức thấp hơn bằng Python 3. Python 3 đã giới thiệu giao thức mới với số 3 (và sử dụng nó làm mặc định), vì vậy hãy chuyển về giá trị 2. Python 2.

Kiểm tra thông số trong pickle.dump. Mã kết quả của bạn sẽ trông như thế này.

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

Không có tham số trong pickle.loadpickle có thể xác định các giao thức từ các tập tin.

30

Pickle sử dụng khác nhau protocols để chuyển đổi dữ liệu của bạn thành luồng nhị phân.

Bạn phải chỉ định trong python 3 một giao thức thấp hơn 3 để có thể tải dữ liệu trong python 2. Bạn có thể chỉ định tham số khi gọi pickle.dump.

Các vấn đề liên quan