El argumento write () debe ser str, no bytes [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Usando pickle.dump - TypeError: debe ser str, no bytes 2 respuestas

Soy un programador principiante y estoy trabajando a través del libro python para el principiante absoluto. Me he encontrado con un problema al intentar escribir una función de alta puntuación para el juego de trivia. cuando se activa la función 'puntuación más alta (usuario, puntuación más alta)', intento asignar los argumentos en consecuencia para poder seleccionar la información en un archivo para su uso posterior. Sin embargo, me encuentro con un error al intentar volcar la información necesaria.

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()

Como estoy trabajando en el libro y también he visto estanterías en acción, intenté usarlas también, pero me encontré con su propio conjunto de errores. ignore los '#' s en este momento.

en la parte pickle.dump es donde estoy generando un error. Sigo recibiendo (como sugiere el título) un error de argumento de escritura.

No entiendo por qué no los reconoce como una cadena. como cuando se definen en la función principal, de hecho es una cadena ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta