当前位置: 首页 > 知识库问答 >
问题:

使用pickle.dump-typeerror:必须是字符串,而不是字节

詹甫
2023-03-14

我使用的是Python3.3,但在尝试pickle一个简单的字典时出现了一个隐秘的错误。

代码如下:

import os
import pickle
from pickle import *
os.chdir('c:/Python26/progfiles/')

def storvars(vdict):      
    f = open('varstor.txt','w')
    pickle.dump(vdict,f,)
    f.close()
    return

mydict = {'name':'john','gender':'male','age':'45'}
storvars(mydict)

我得到:

Traceback (most recent call last):
  File "C:/Python26/test18.py", line 31, in <module>
    storvars(mydict)
  File "C:/Python26/test18.py", line 14, in storvars
    pickle.dump(vdict,f,)
TypeError: must be str, not bytes

共有1个答案

锺离韬
2023-03-14

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

f = open('varstor.txt','w')

需要:

f = open('varstor.txt','wb')
 类似资料:
  • 我知道很多人问过相关的问题,但请帮我解决。我试图复制一个我在网上找到的开源温度控制实验室。我想在树莓皮上运行它。这就是我一直遇到的错误: 生成它的代码如下所示: 我相信这段代码试图通过以下代码与另一个python文件通信: 我还不知道我周围的python代码,所以一个非常清晰的“虚拟类”解决方案的解释会很有帮助。谢谢伙计们。

  • 我想对一个浮点数进行四舍五入,得到点后的两位数。但我收到了一个错误: float()参数必须是字符串或数字,而不是“NoneType” 在评级模型的评级字段中四舍五入是一个坏主意,因为平均_评级不会四舍五入

  • 我遵循了这个答案:Stanford nlp for python 我使用较长的文本作为输入,并遇到以下错误:

  • 问题内容: 刚收到我的一张表格中的Sentry错误。我知道它与Django 1.11有关,但是我不确定要进行哪些更改以修复它。 违规线 整个视图 问题答案: 在Django 1.8+中 ,模板的方法采用参数的字典。不赞成通过实例,在Django 1.10+中给出了错误。 在您的情况下,只需使用常规而不是实例即可: 您可能更喜欢使用快捷方式: 如果您使用而不是,那么您也将传递给这些方法,以便上下文处

  • 我已经使用stencil一段时间了,正在为它开发一个自定义的主题,我已经安装了nvm和Node5.0和NPM2。我也删除了stencil,并重新安装了所有的内容,包括节点模块和stencil init,但不管什么情况,当运行stencil start时,我仍然会出现下面的错误,我已经在谷歌上搜索了这个问题,但却是空的,所以我希望有人能帮我解决这个问题。提前道谢!

  • 问题内容: 我一直在寻找一种从python脚本运行外部进程并在执行期间打印其stdout消息的方法。 下面的代码有效,但是在运行时不输出标准输出。退出时,出现以下错误: sys.stdout.write(nextline)TypeError:必须为str,而不是字节 我正在使用python 3.3.2 问题答案: Python 3处理字符串有些不同。最初,字符串只有一种类型:。上世纪90年代,当u