write()参数必须是str,而不是bytes

Aus*_*ard 14 python string byte pickle

我是初学程序员,正在为绝对的初学者编写python这本书.我试图为琐事游戏写一个高得分函数时遇到了一个问题.当调用函数'highscore(user,highscore):'时,我尝试相应地分配参数,这样我就可以将信息腌制到文件中供以后使用.但是我试图转储所需的信息时遇到错误.

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()
Run Code Online (Sandbox Code Playgroud)

因为我正在阅读这本书,并且还看到了我正在尝试使用它们的架子,但是遇到了他们自己的一组错误.所以现在忽略'#'.

在部分pickle.dump是我生成错误的地方.我一直得到(如标题所示)写入参数错误.

我不明白为什么它不认识它们为字符串.当它们在main函数中定义时,它确实是一个字符串..

Mar*_*ers 20

看起来你正在编写一本针对Python 2的书.你需要以二进制模式打开文件; 添加b到模式:

Hscore = open('highscore.txt', 'ab')
Run Code Online (Sandbox Code Playgroud)

如果您的书包含更多类似的问题,那么可能是时候切换到支持Python 3或至少为了完成书籍练习而安装Python 2.7的书.