Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-构造一个类似于另一个pickle文件的文件_Python_Pickle - Fatal编程技术网

Python-构造一个类似于另一个pickle文件的文件

Python-构造一个类似于另一个pickle文件的文件,python,pickle,Python,Pickle,我有(29.60 MB),并想pickle另一个文件,将类似于其结构 我有以下用于取消勾选文件的脚本: 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 = ope

我有(29.60 MB),并想pickle另一个文件,将类似于其结构

我有以下用于取消勾选文件的脚本:

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代码,以类似于上述文件的结构对数据进行pickle处理


谢谢。

很简单。Pickle-lib的功能类似于任何其他数据序列化库(如json),其额外功能是能够(反)序列化本机Python对象

如果您有一个dict,您希望与示例文件类似地进行pickle处理,只需调用
pickle.dump(my_dict)
et voilá,您就有了可以写入文件的二进制数据

如果您询问pickle文件是如何构造的,下面是如何构造的:您有一个包含四个键的dict:

>>> pickled_dict.keys()
['data', 'labels', 'batch_label', 'filenames']
  • “标签”是一个0-9范围内10000个数字的列表
  • “批次标签”是字符串“培训批次1,共5个”
  • “文件名”是包含10000个字符串(图像文件名)的列表
  • “data”是一个由10000个数组组成的数组,每个数组的大小都是8位无符号整数。它是一个numpy.ndarray对象(numpy是一个用于处理二进制/数字数据矩阵的python库),我想它应该首先指示“图像”是如何加载的——可能只是以二进制模式加载并将字符逐个写入数组,但我只能在这里猜测
通过模仿这句话来组织你自己的批次。 如果您需要知道我是如何获得这些数据的,只需使用您的depickle代码,并在反pickle对象上调用
\uuu class\uuu
keys()
、和
len()
,而不是将其写回文件(我认为,数据部分失败)


希望这有所帮助。

拾取的文件是python对象的二进制表示形式。你不应该知道这个文件是什么样子的。用例是什么?PS:您的导入看起来有问题。只需
import-cPickle
(对于python 2)或
import-pickle
(对于python 3)谢谢您的回复。用例是,我想读取一个文件并返回其名称、数据和标签,如下所示:名称、数据、标签=cifar\u tools.read\u data('C:\\Users\\abc\\Desktop\\Testing'),因此您想查看pickle输出文件的内容,并从中确定该文件是什么,而不取消pickle?这是有道理的,但我不敢打赌这是可能的。不过我不知道。