Python2.7: Trying to pickle set of custom objects
我有点像Python皮,所以请多多包涵。我有一组自定义类,每个自定义类基本上都package了一些功能并将其添加到已转换为
这就是我正在做的事情:
酸洗
1 2 3 4 5 6 7 8 9 10 | frame_jar_file = open(os.path.join(asset_path,"frame_jar.pkl"),"w+") for x in range(1, 500): path = os.path.join(img_path,"{0}.jpg".format(str(x).zfill(8))) surface = NumpySurface(path) self.scene_surfaces.append(surface) frame_jar = cPickle.Pickler(frame_jar_file, -1) # have tried this with no protocol arg as well frame_jar.dump(self.scene_surfaces) frame_jar_file.close() exit() |
产生一个大小约为2gb的文件,考虑到数据,这对我来说似乎是正确的。
解酸
1 | self.scene_surfaces = cPickle.Unpickler(os.path.join(asset_path,"frame_jar.pkl")) |
引发此错误:
1 | TypeError: argument must have 'read' and 'readline' attributes |
您需要传入一个打开的文件对象,而不是文件名:
1 2 3 | with open(os.path.join(asset_path,"frame_jar.pkl"), 'rb') as infh: unpickler = cPickle.Unpickler(infh) self.scene_surfaces = unpickler.load() |
我还假设您要加载数据,而不仅仅是创建一个unpickler。