2017-02-20 48 views
2

就我而言,我希望泡菜使用pickle.load()我一直在努力,当发现其中一个列表结束和下一个开始,我只是穿上”(使用pickle.dump())两个单独的列表来一个文件,然后从一个单独的文件检索这些,但是不知道如何pickle.dump()他们的方式,使他们很容易检索,即使浏览文档后。如何在一个文件中腌制多个对象?

+0

您是否尝试过在一个封闭的名单写他们的子列表例如'my_list = [[list_1],[list_2]])'或类似的或以某种方式将它们合并到一个单一的数据结构中来腌菜? – roganjosh

+0

如果腌制两个名单陆续在同一文件中使用'和pickle.dump(L1,F);和pickle.dump(L2,F)',则可以以相同的顺序从以'L1 =和pickle.load相同的文件unpickle它们(F); L2 =和pickle.load(F)'。泡菜会发现一个结束,另一个开始。 – DyZ

+0

我试试看,谢谢。如果这不起作用,我可以使用我没有想到的子列表。 – Drake

回答

3

pickle会在你倾倒他们以相同的顺序读取它们。

import pickle 

test1, test2 = ["One", "Two", "Three"], ["1", "2", "3"] 
with open("C:/temp/test.pickle","wb") as f: 
    pickle.dump(test1, f) 
    pickle.dump(test2, f) 
with open("C:/temp/test.pickle", "rb") as f: 
    testout1 = pickle.load(f) 
    testout2 = pickle.load(f) 

print testout1, testout2 

打印出['One', 'Two', 'Three'] ['1', '2', '3']。咸菜对象任意数量的,或只是让他们更易于使用,你可以把它们放在一个元组,然后你只需要酸洗一个对象。

import pickle 

test1, test2 = ["One", "Two", "Three"], ["1", "2", "3"] 
saveObject = (test1, test2) 
with open("C:/temp/test.pickle","wb") as f: 
    pickle.dump(saveObject, f) 
with open("C:/temp/test.pickle", "rb") as f: 
    testout = pickle.load(f) 

print testout[0], testout[1] 

打印出['One', 'Two', 'Three'] ['1', '2', '3']

+0

谢谢你,我现在知道咸菜按他们腌制的顺序读它们。 – Drake

相关问题