Pickle:TypeError:需要一个类似字节的对象,而不是“str”

新手上路,请多包涵

当我在 python 3 中运行以下代码时,我不断收到此错误:

 fname1 = "auth_cache_%s" % username
fname=fname1.encode(encoding='utf_8')
#fname=fname1.encode()
if os.path.isfile(fname,) and cached:
    response = pickle.load(open(fname))
else:
    response = self.heartbeat()
    f = open(fname,"w")
    pickle.dump(response, f)

这是我得到的错误:

 File "C:\Users\Dorien Xia\Desktop\Pokemon-Go-Bot-Working-Hack-API-master\pgoapi\pgoapi.py", line 345, in login
    response = pickle.load(open(fname))
TypeError: a bytes-like object is required, not 'str'

我尝试通过编码函数将 fname1 转换为字节,但它仍然没有解决问题。有人能告诉我怎么了吗?

原文由 D Xia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 647
1 个回答

您需要以二进制模式打开文件:

 file = open(fname, 'rb')
response = pickle.load(file)
file.close()

写作时:

 file = open(fname, 'wb')
pickle.dump(response, file)
file.close()


顺便说一句,您应该使用 with 来处理打开/关闭文件:

阅读时:

 with open(fname, 'rb') as file:
    response = pickle.load(file)

写作时:

 with open(fname, 'wb') as file:
    pickle.dump(response, file)

原文由 Farhan.K 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题