2011-11-21 75 views
0

我正在製作一個python程序來醃製一些數據,然後將它保存到一個文件中。它不工作。很奇怪的蟒蛇NameError

path="C:/foo/bar" 
def newData(): 
    import pickle 
    data = [ 
     ["foo"], 
     ["bar"], 
     ["baz"] 
    ] 
    file = None 
    i = 0 

    while file==None: 
     if not exists(path + str(i)+".data"): 
      file = open(path + str(i)+".data", "w+") 
     else: 
      i+=1 
    pickle.dump(data, file) 
    close(file) 
    return path + str(i)+".data" 

我得到一個名字錯誤,指出「全球名稱接近沒有定義」:

File "C:/foo/bar/baz.py", line 26, in newData 
    close(file) 
NameError: global name 'close' is not defined 

如果我評論與接近它的行,我得到:

File "C:/foo/bar/baz.py", line 26, in newData 
    #close(file) 
NameError: global name 'close' is not defined 

我的代碼錯了嗎(是)?怎麼樣?

+1

怎麼'回合'file.close()' – JBernardo

+0

@Jernardo沒有。文件「C:/foo/bar/baz.py」,第26行,在newData中 file.close() NameError:未定義全局名稱'close' –

+0

如果用close()註釋掉該行,仍然看到這個錯誤,它與你認爲的不同。 –

回答

4

您正在編輯您的文件,但您的Web服務器仍在運行舊代碼。追溯讀取源文件以顯示該行,但這並不意味着它正在運行該行。從您提到的回溯中可以清楚地看到,這表明註釋行是問題。

由於@JBernardo評論說,你需要將「close(file)」改爲「file.close()」,然後你需要強制你的web服務器重新加載代碼。

+1

如果一切都失敗,刪除相應的.pyc文件可能會有所幫助。 –

+0

謝謝,這工作。 –