簡體   English   中英

我想從腌制的dat文件中加載字典,但是問題是我第一次嘗試將其加載時,腌制的字典不存在。

[英]I want to load a dictionary from a pickled dat file but the issue is that the first time I try to load it the pickled dictionary does not exist

我是GCSE學生,並且遇到了一個問題,要求我將學生姓名和考試成績保存到文件中,以便以后進行檢索和操作。

我決定將數據存儲在字典中,然后根據需要進行腌制和檢索。我知道如何腌制字典並檢索以前腌制的字典。

我的問題僅在第一次運行程序時出現,因為dat文件尚未創建。

下面的代碼將打開現有的Dat文件,並將最新的學生姓名和分數寫入文件中包含的詞典。

f = open("class1.dat","ab+")
class1 = pickle.load(f)
class1[Name]=Score
pickle.dump(class1,f)
f.close

問題是,一旦第一個分數保存到Dat文件中,該方法就起作用了,但是第一次運行該程序時,我收到了此錯誤消息。

Traceback (most recent call last):
  File "C:\Python34\Latest_Version.py", line 61, in <module>
    class1 = pickle.load(f)
EOFError: Ran out of input

我意識到這是因為dat文件尚不存在。

用什么代碼檢查Dat文件是否首先存在?

如果您可以提供幫助,請保持簡單,因為我的知識有限。

發生這種情況的原因是,您的泡菜文件中沒有數據。 您需要運行檢查以查看是否有要加載的數據。 因此,您可以將代碼放入try / except中,以檢查是否可以加載數據。 如果不能,則將初始數據(空數據)寫入pickle文件。

此外,請注意顯式設置對文件的讀寫。

import pickle

class1 = {}
try:
    class1 = pickle.load(open("my_stuff.pkl", "rb"))
    print(class1)
    class1['bob'] = 123
    pickle.dump(class1, open("my_stuff.pkl", "wb"))
except:
    pickle.dump(class1, open("my_stuff.pkl", "wb"))

因此,這里發生的是先聲明一個空字典,然后嘗試加載內容。 如果失敗,它將進入except ,轉儲空數據。 因此,下次進入時,它將成功加載,您可以寫入數據,然后轉儲泡菜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM