Write() должен быть str, а не байтами
Я начинающий программист и работаю над книгой python для абсолютного новичка. Я столкнулся с проблемой, пытаясь написать высокую оценку для игры с пустяками. когда вызывается функция "highscore (user, highscore):", я пытаюсь назначить аргументы соответствующим образом, чтобы я мог распиливать информацию в файл для последующего использования. однако я столкнулся с ошибкой, пытаясь сбросить необходимую информацию.
def highscore(user, highscore):
'''stores the players score to a file.'''
import pickle, shelve
user = ''
highscore = 0
#Hscore = shelve.open('highscore.dat', 'c')
Hscore = open('highscore.txt', 'a')
pickle.dump(user, Hscore)
pickle.dump(highscore, Hscore)
#Hscore.sync()
Hscore.close()
так как я работаю над книгой, а также вижу полки в действии, я тоже пытался использовать их, но сталкивался с их собственным набором ошибок. поэтому игнорируйте '# в это время.
на части pickle.dump, где я генерирую ошибку. Я продолжаю получать (как говорит название) ошибку аргумента записи.
Я не понимаю, почему он не распознает их как строку. как если бы они были определены в основной функции, это действительно строка.
Ответы
Ответ 1
Похоже, вы работаете над книгой, нацеленной на Python 2. Вам нужно открыть файл в двоичном режиме; добавьте b
в режим:
Hscore = open('highscore.txt', 'ab')
Если ваша книга содержит больше таких проблем, возможно, пришло время переключиться на ту, которая поддерживает Python 3, или установить Python 2.7, по крайней мере, для завершения упражнений по книге.