2010-10-06 191 views
10

我有一個文件,其中我傾倒了大量的lists.Now我想加載這個文件到內存中,並使用它裏面的數據。我試圖加載我的文件使用「pickle」的「加載」方法,但是,由於某些原因,它只是給了我文件中的第一項。實際上,我注意到它只是加載我的第一個列表到內存中,如果我想加載我的整個文件(一些列表),那麼我必須迭代我的文件,並在每個文件中使用「pickle.load(filename)」迭代我採取。 問題是我不知道如何用循環(for或while)實際實現它,因爲我不知道何時到達文件的末尾。 一個例子會幫助我很多。 感謝從一個文件中讀取使用pickle和for循環python

回答

9

如何:

lists = [] 
infile = open('yourfilename.pickle', 'r') 
while 1: 
    try: 
     lists.append(pickle.load(infile)) 
    except (EOFError, UnpicklingError): 
     break 
infile.close() 
+2

你應該__never__使用'除外:';總是指定你想要捕捉的異常(例如'PicklingError:'除外)。另外,無限循環的Python成語是'while 1',儘管這是nitpicky =)。 – katrielalex 2010-10-06 10:51:27

+0

@katrielalex - 你說得對,我修好了。 @Hossein - 我現在已經測試了可能的錯誤,所以如果它引發了比EOFError和UnpicklingError更多的錯誤,請將它添加到列表中。 – eumiro 2010-10-06 11:04:40

+4

現代Python應該使用'while True'來實現無限循環。 '1'在Python代碼中被使用,它早於PEP 285,它在語言中增加了'True'。 – 2013-09-10 15:46:28

相關問題