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])
我正在进行测验,并试图从测验中打印数据。问题是,即使文件中存在更多分数或名称,它也只会打印一个名称和一个分数。
答案 0 :(得分:2)
您正在通过追加将新泡菜写入文件。您的加载代码只加载第一个 pickle,因此是您创建的第一个条目。
您需要始终使用'wb'
将新版本的词典替换为磁盘数据。
尝试使用'ab'
append-mode读取您写入文件的其他文章是没有意义的;那些是后来和后来修订的同一本词典。你必须只阅读最后一个,与每次更新字典时更换整个文件相比效率低。