我有一个很久没有使用的程序了,它的信息以pickle格式存储。我想获取此信息。我现在尝试运行此程序,但出现此错误:
AttributeError: 'class_info_image_one' object has no attribute '__dict__'
class_info_image_one
是一个命名元组。
找到这里引用的内容:Pickle cross platform __dict__ attribute error
那么,此程序应在哪个python版本上运行?我尝试了python 3.7和python 3.1,两者都出现相同的错误。
尝试使用python 2.7,出现此错误:
ValueError: unsupported pickle protocol: 3
这是我正在使用的代码,我删除了所有不必要的内容:
import os
import pickle
from collections import deque, namedtuple
class_info_image_one = namedtuple('class_info_image_one', 'md5 extension id tags rating source has_notes has_sample parent_id has_children created_at status author creator_id width height file_size has_comments score')
if os.path.isfile('info_image.pickle'):
with open('info_image.pickle', 'rb') as lolfile:
info_image = pickle.load( lolfile )
答案 0 :(得分:0)
根据您链接的Python错误的讨论,在pickle中损坏的__dict__
存在于Python 3.2和3.3中,并已在3.3.2中修复。显然,它并不能阻止在相同版本中进行解腌。