2016-07-22 36 views
10

Ich bin ein Anfänger Programmierer und arbeite durch das Buch Python für den absoluten Anfänger. Ich bin auf ein Problem gestoßen, als ich versuchte, eine hohe Punktzahl für das Quizspiel zu schreiben. Wenn die Funktion 'highscore (user, highscore):' aufgerufen wird, versuche ich, die Argumente entsprechend zuzuordnen, damit ich die Informationen zur späteren Verwendung in eine Datei picken kann. Ich habe jedoch einen Fehler beim Versuch, die benötigten Informationen zu löschen.write() Argument muss str sein, nicht Bytes

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

da ich durch das Buch gerade arbeitete und auch Regale in Aktion gesehen, die ich auch versucht, aber mit ihnen in ihre eigene Reihe von Fehlern führen. also ignoriere die '#' zu diesem Zeitpunkt.

am Teil pickle.dump ist, wo ich einen Fehler erzeuge. Ich bekomme (wie der Titel schon sagt) einen Schreibfehler.

Ich verstehe nicht, warum es sie nicht als Zeichenfolge erkennt. wie wenn sie in der Hauptfunktion definiert sind, ist es in der Tat eine Zeichenfolge ..

+1

Versuchen Sie es mit dem'Ab'-Modus. Wenn Sie 'pickle' verwenden, sollte im Dateimodus immer ein' b' sein. –

+0

Sie können einige zusätzliche gute Informationen hierzu finden, indem Sie den Titel Ihrer Frage googlen. – TigerhawkT3

Antwort

16

Sieht aus wie Sie arbeiten durch ein Buch für Python 2. Sie müssen Ihre Datei in binären Modus öffnen; hinzufügen b dem Modus:

Hscore = open('highscore.txt', 'ab') 

Wenn Ihr Buch mehr Fragen wie diese enthält, kann es Zeit zu wechseln sein, die 2.7 zumindest für die Zwecke der Vollendung des Buches Übungen Python 3 oder zu installieren Python unterstützt.

Verwandte Themen