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

53 浏览
0 Comments

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

这个问题已经有了答案

使用pickle.dump - TypeError:必须是str,而不是bytes

我是一名初学者程序员,正在学习《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()

由于我正在阅读这本书,并且也看到过shelf的用法,因此我也尝试使用它们,但是遇到了自己的一套错误。所以暂时忽略此时的 \'#\'。

在pickle.dump部分是我正在生成错误。正如标题所示,我一直得到写入参数错误。

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

admin 更改状态以发布 2023年5月20日
0
0 Comments

看起来你正在学习一本面向Python 2的书。你需要以二进制模式打开文件;在模式后添加b

Hscore = open('highscore.txt', 'ab')

如果你的书中包含更多这样的问题,那么可能是时候转换到支持Python 3的书籍或者至少安装Python 2.7来完成书中的练习了。

0