2017-02-20 38 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

相關問題