【问题标题】:Using Pickle to save Dictionary-- Not Working使用 Pickle 保存字典 - 不工作
【发布时间】:2015-05-06 12:55:52
【问题描述】:

我目前正在制作一个游戏,最后,用户的姓名和经验值将保存在字典中的文件中。然后,我将调用文件并打印出玩家的姓名和各自的经历。

但是,由于某种原因,我收到“TypeError: must be str, not bytes”

我不知道如何解决这个问题,对我来说我的代码看起来很准确。我该如何解决这个错误?

代码

import pickle
game_winners_tracker=open("C://Users//Documents//GameWinners.txt",   "a")

finalname=str(x.character_name)
finalexp=str(x.exp)

print(finalname)
print(finalexp)

dumping={finalname:finalexp}
pickle.dump(dumping,game_winners_tracker)
game_winners_tracker.close

game_winners_tracker_second=open("C://Users//Documents//GameWinners.txt", "rb")
names_scores=pickle.load(game_winners_tracker_second)
print(names_scores)
print("The End!")

注意

当我在上面的代码中调用 print finalname 和 finalexp 时(只是为了测试查看 x.character_name 和 x.exp 中的内容)我得到了我所期望的 -

I.E 它将打印:

Megan
130.5

我将两者都转换为字符串,为什么会出现 TypeError?

【问题讨论】:

  • 你在没有b的情况下打开它
  • 你在哪一行得到了错误?

标签: python dictionary pickle


【解决方案1】:

模式'r+'、'w+'和'a+'打开文件进行更新(读写);注意 > 'w+' 会截断文件。在区分二进制文件和文本文件的系统上,将“b”附加到模式以二进制 > 模式打开文件;在系统上 没有这个区别,加'b'没有效果。

来自Python API

那就试试吧:

import pickle
game_winners_tracker=open("C://Users//Documents//GameWinners.txt",   "ab")

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多