Программирование на Python для абсолютных новичков: Глава 7 Хранение сложных данных

Я учусь на "Программировании на 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

Есть идеи?

5
задан Lennart Regebro 12 February 2011 в 20:26
поделиться