write()的参数必须是字符串,而不是字节。

17

我是一名初学者,正在学习《Python编程入门》这本书。在为一个问答游戏编写高分函数时,我遇到了问题。当调用函数 'highscore(user, highscore):' 时,我尝试相应地分配参数,以便将信息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这部分是我遇到错误的地方。我一直得到(如标题所示)写入参数错误。

我不明白为什么它没有把它们识别为字符串。因为当它们在主函数中被定义时,它确实是一个字符串..


1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Aran-Fey
你可以通过谷歌搜索你问题标题,找到一些额外的好信息。 - TigerhawkT3
1个回答

23

看起来你正在使用针对Python 2的图书。你需要以二进制模式打开文件;在模式中添加b

Hscore = open('highscore.txt', 'ab')
如果你的书籍包含更多类似这样的问题,那么可能是时候切换到支持 Python 3 的书籍或者至少安装 Python 2.7 以完成书中的练习了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接