我是一名初学程序员,正在为绝对的初学者学习python这本书。我试图为琐事游戏写一个高得分函数时遇到了一个问题。当功能'高分(用户,高分):'调用我尝试相应地分配参数,以便我可以将信息pickle到文件供以后使用。但是我在尝试转储所需信息时遇到了错误。
def highscore(user, highscore):
'''stores the players score to a file.'''
import pickle, shelve
user = ''
highscore = 0
#Hscore = shelve.open('highscore.dat', 'c')
Hscore = open('highscore.txt', 'a')
pickle.dump(user, Hscore)
pickle.dump(highscore, Hscore)
#Hscore.sync()
Hscore.close()
因为我正在阅读这本书并且还看到了我正在尝试使用它们的架子,但是遇到了他们自己的一组错误。所以现在不要理会#。#'
在pickle.dump部分是我生成错误的地方。我一直得到(如标题所示)写入参数错误。
我不明白为什么它不承认它们是字符串。因为当它们在main函数中定义时,它确实是一个字符串..
答案 0 :(得分:20)
看起来你正在阅读一本针对Python 2的书。你需要以二进制模式打开文件;将b
添加到模式:
Hscore = open('highscore.txt', 'ab')
如果你的书中包含更多类似的问题,可能是时候切换到支持Python 3或至少为了完成书籍练习而安装Python 2.7。