【发布时间】:2011-02-12 20:01:23
【问题描述】:
我正在学习“面向绝对初学者的 Python 编程”并且一直很开心。这本书是为 Python 2.7 编写的(我认为),但我一直在使用 Python 3 并翻译代码,这是一个有趣的挑战。
我最近遇到了一个不知道如何解决的问题。在标记为:“提取数据并将其写入文件”的部分中有一个示例,您可以在其中运行以下代码:
import cPickle, shelve
print "Pickling lists." variety = ["sweet", "hot", "dill"]
shape = ["whole", "spear", "chip"]
brand = ["Claussen", "Heinz", "Vlassic"]
pickle_file = open("pickles1.dat", "w")
cPickle.dump(variety, pickle_file)
cPickle.dump(shape, pickle_file)
cPickle.dump(brand, pickle_file)
pickle_file.close()
我把它翻译成这个(python 3)
import pickle, shelve
print ("Pickling lists.")
variety = ["sweet", "hot", "dill"]
shape = ["whole", "spear", "chip"]
brand = ["Classen", "Heinz", "Vlassic"]
pickle_file = open("pickles1.dat", "w")
pickle.dump(variety, pickle_file)
pickle.dump(shape, pickle_file)
pickle.dump(brand, pickle_file)
pickle_file.close()
但是,我从 IDLE 得到这个错误/输出:
Pickling lists.
Traceback (most recent call last):
File "/Users/hypernerdcc/Documents/pickles.py", line 11, in <module>
pickle.dump(variety, pickle_file)
File
"/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/pickle.py",
line 1345, in dump
Pickler(file, protocol, fix_imports=fix_imports).dump(obj)
TypeError: must be str, not bytes
有什么想法吗?
【问题讨论】:
标签: python-3.x