2012-04-19 51 views
0

我有2個函數用於從文件讀取數據並將其放到字典中。「TypeError:'NoneType'對象不可調用」有時會出現,有時 - 不是

def read_input(): 
    f = open(r"D:\data.txt","r") 
    g = {} 
    for ln in f.readlines(): 
    ...g = ... 
    f.close() 
    return g 

幾乎與第二個功能是相同的:

def reverse(): 
    f = open(r"D:\data.txt","r") 
    g = {} 
    for ln in f.readlines(): 
    .... 
    f.close() 
    return g 

後,我有這樣的代碼:

g = read_input() 
g_rev = reverse() 

工作正常,小g & g_rev(小型輸入文件)。從那以後,我需要做的深層遞歸的,所以我說這行,其中包括兩個read_inputreversemain1

if __name__=="__main__": 
    sys.setrecursionlimit(100000) 
    threading.stack_size(67108864*3)  
    thread = threading.Thread(target=main1) 
    thread.start() 
    thread.join(0) 

仍然能正常WIL小g ......但隨着大輸入文件,我得到了這樣的錯誤:

g = reverse() 
TypeError: 'NoneType' object is not callable. 

如果我換read_input()reverse()並調用reverse()它通過了,但對於read_input

+0

'...'位是否包含'reverse =(something)'某處? – geoffspear 2012-04-19 20:28:17

+0

不,只是讀取數據到init字典。這兩個函數只被調用一次 – tata 2012-04-19 20:30:20

+0

爲什麼在f.readlines()中爲ln做'':?你可以在''中爲'ln'做'',它迭代,而不是創建一個列表。更高效。 – 2012-04-19 20:31:57

回答

0

的同樣的錯誤re可能是read_input()或reverse()的錯誤。
方案1
的時候返回g的執行,G已經是一個NoneType
情景2
有與防止它們到達返回G的公報功能的缺陷。

無論哪種方式,爲了真正幫助你,我們需要更多的代碼,尤其是函數部分。

相關問題