正确地腌制和取消字典

时间:2014-04-26 15:34:30

标签: python pickle

我刚刚开始使用Python 3.4.0中的Pickle模块并尝试将其应用于处理类别和单词的简单程序。到目前为止,它按计划存储了所有内容,但是当我尝试加载我放入文件的内容时,结构似乎是空的:

new_data = int(input("New Data File?\n 1 = Yes\n 0 = No\nChoice: "))
if (new_data == 1):
   f = open('data.txt', 'wb+')
   data_d = {}
   pickle.dump(data_d, f)
   f.close()

PrMenu()
option = int(input("Option: "))
f = open('data.txt', 'rb+')        
d = pickle.load(f)
#Functions inside this menu loop receive the structure (Dictionary)
#and modify it accordingly (add/modify/clear category/word), no
#pickling/unpickling is involved
while (option != 0):
   if (option == 1):
      add_c(d)
   elif (option == 2):
      modify_c(d)
   elif (option == 3):
      clear_c(d)
   elif (option == 4):
      add_w(d)
   elif (option == 5):
      modify_w(d)
   elif (option == 6):
      clear_w(d)
   elif (option == 7):
      pr_cw(d)
   elif (option == 8):
      pr_random(d)

   if (option != 0):
      PrMenu()
      option = int(input("Option: "))


#the output structure would be eg. {category_a:[word1, word2, word3, ...], category_b:[..., ...]}
pickle.dump(d, f)
f.close()
print("End of Program")

我不确定问题出在哪里,我希望我足够清楚。

感谢。

1 个答案:

答案 0 :(得分:0)

您正在将数据附加到您的文件中。所以第一个数据集是您读入的空字典,第二个数据集是填充字典,您再也不会读取它。你必须在写作之前回到0。