python程序不打印所有pickle文件数据

时间:2015-02-27 13:21:16

标签: python python-3.x pickle

testdata = {}
testdata[Name] = Score
fileexists = os.path.isfile('TestResults- Class '+classnumber)
if fileexists == False:
    open('TestResults- Class '+classnumber,mode="w+")
    mypicklefile = open('TestResults- Class '+classnumber,mode="wb")
    pickle.dump(testdata,mypicklefile)
    mypicklefile.close()
elif fileexists == True:
    mypicklefile = open('TestResults- Class '+classnumber,mode="ab")
    pickle.dump(testdata,mypicklefile)
def teacher():
    classchoice = input('what class would you like to see?: ')
    readablefile = open('TestResults- Class '+classchoice,mode="rb")
    datafile = pickle.load(readablefile)
    for name in sorted(datafile):
            print(name, datafile[name])

我正在进行测验,并试图从测验中打印数据。问题是,即使文件中存在更多分数或名称,它也只会打印一个名称和一个分数。

1 个答案:

答案 0 :(得分:2)

您正在通过追加将泡菜写入文件。您的加载代码只加载第一个 pickle,因此是您创建的第一个条目。

您需要始终使用'wb'将新版本的词典替换为磁盘数据。

尝试使用'ab' append-mode读取您写入文件的其他文章是没有意义的;那些是后来和后来修订的同一本词典。你必须只阅读最后一个,与每次更新字典时更换整个文件相比效率低。