2012-09-02 73 views
1

所以我正在製作一個python遊戲,並且我正在嘗試實現一個保存/加載系統。我有保存部分,但是我所做的加載功能不起作用。當我將cPickle.load分配給新列表時,它不會註冊。name'newList'沒有被定義

def save(): 
    file = open('save.txt', 'wb') 
    cPickle.dump(GameState, file) 
    file.close() 

def load(): 
    inFile = open('save.txt', 'rb') 
    newList = cPickle.load(inFile) 
    inFile.close() 

請幫忙,謝謝!

回答

3

你可能忘記返回列表中load

def load(): 
    inFile = open('save.txt', 'rb') 
    newList = cPickle.load(inFile) 
    inFile.close() 
    return newList 

需要注意的是一個更Python加載您的文件是:

def load(name_of_your_saved_file): 
    with open(name_of_your_saved_file, 'rb') as inFile: 
     newList = cPickle.load(inFile) 
    return newList 

在這裏,我們使用所謂Python中的上下文(with...as聲明),確保您的文件被自動調用非常有用。不要在函數中對文件的名稱進行硬編碼,而是將其作爲參數傳遞。

當你打電話給load功能時,你會得到你放在你的醃菜裏的東西,GameState就是你的情況。

game_state_loaded = load('save.txt') 
+0

您還應該提到如何的功能將被用於'newList =負載()' –

+0

,使得它工作的大衛,謝謝:) – finaris

+1

@finaris:你是如何調用'負載()'函數?你需要做'newList = load()'。 (請注意,函數中的名稱newList與名稱newList = load()無關:您可以爲每個名稱使用不同的名稱。 –