我有一个释放函数,它返回一个dict:
def unpickle(file):
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict
和一个读取带有字段名的腌制对象的函数(不知道这是否是正确的定义):
def do_sth():
all_data = unpickle('mypickle.pickle')
image_filenames = all_data["Filenames"]
conditions = all_data["Labels"]
为简便起见,我有两个列表,分别为Filenames = ['001.png','002.png']
和Labels = ['0','1']
,我需要在mypickle.pickle
下腌制并保存,以便可以在do_sth
函数下调用它们。到目前为止,我所做的是:
data = [Filenames,Labels]
with open("mypickle.pickle", "wb") as f:
pickle.dump(data, f)
和
data = dict(zip(file_paths, labels))
with open("mypickle.pickle", "wb") as f:
pickle.dump(data, f)
但是我得到KeyError :'Filenames'
。我应使用哪种结构来保存这两个列表,以便它们可以正常工作。
谢谢。
答案 0 :(得分:3)
将功能更改为此
def do_sth():
all_data = unpickle('mypickle.pickle')
image_filenames = all_data[0]
conditions = all_data[1]
说明
您将泡菜保存为列表。加载泡菜时,它仍然是列表。
或
实际上将其另存为字典
data = {"Filenames": Filenames, "Labels": Labels}
with open("mypickle.pickle", "wb") as f:
pickle.dump(data, f)