我有this pickled file(29.60 MB),并希望腌制另一个与其结构类似的文件。
我有以下脚本来取消文件:
import _pickle as cPickle
def unpickle(file):
fo = open(file, 'rb')
dict = cPickle.load(fo, encoding='latin1')
fo.close()
return dict
content = unpickle('batch')
output_file = open('content.txt', 'w')
output_file.write(str(content))
我想问的是:
1。我有两张图片,一张名为image1.jpg
,另一张为image2.jpg
,其中image1.jpg
的标签为1
, image2.jpg
会有2
标签。
基于上面的文件,pickle文件会是什么样子(如果你能亲自演示的话)?
2. 我如何编写一个Python代码来腌制与上述文件类似的结构中的数据?
感谢。
答案 0 :(得分:1)
这很简单。 Pickle lib函数与任何其他数据序列化lib类似,例如json,具有能够(解)序列化本机Python对象的额外功能。
如果您有一个想要与示例文件类似地进行腌制的字典,只需调用pickle.dump(my_dict)
etvoilà,您就可以将二进制数据写入文件。
如果你问的是pickle文件的结构如何,请按照以下方式:你有一个带有四个键的dict:
>>> pickled_dict.keys()
['data', 'labels', 'batch_label', 'filenames']
通过模拟此dict构建您自己的批次。
如果您需要知道我是如何获得这些数据的,那么只需使用您的depickle代码并在去除腌制的对象上调用__class__
,keys()
和len()
,而不是将其写回一个文件(我猜想,数据部分失败了。)
希望这会有所帮助。