2016-07-22 91 views
10

我是一名初學者程序員,正在爲絕對的初學者準備書籍python。我遇到了一個問題,試圖爲瑣事遊戲寫出高分的功能。當函數'highscore(user,highscore):'被調用時,我嘗試相應地分配參數,這樣我就可以將信息醃製到一個文件中供以後使用。但是我遇到了一個錯誤,試圖轉儲所需的信息。write()參數必須是str,而不是字節

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

嘗試使用'ab'模式。無論何時使用'pickle',在文件模式下都應該有'b'。 –

+0

您可以通過使用Google搜索您的問題標題找到其他一些有用的信息。 – TigerhawkT3

回答

16

看起來您正在通過一本針對Python 2的書。您需要打開文件二進制模式;添加b的模式:

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

如果你的書包含了更多像這樣的問題,它可能是時間切換到一個支持Python 3或安裝Python 2.7完成本書練習的目的,至少。

相關問題