我正在使用python3.3并且在尝试挑选一个简单的字典时遇到了一个神秘的错误。
以下是代码:
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
答案 0 :(得分:314)
输出文件需要以二进制模式打开:
f = open('varstor.txt','w')
需要:
f = open('varstor.txt','wb')
答案 1 :(得分:9)
刚才有同样的问题。在Python 3中,二进制模式&#39; wb&#39; rb&#39;必须指定,而在Python 2x中,不需要它们。当您按照基于Python 2x的教程进行操作时,这就是您来到这里的原因。
fixtures