2012-04-19 16 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 

第二の機能とほぼ同じ:

g = read_input() 
g_rev = reverse() 

は(小さな入力ファイルに対して)小さなg & g_revのために正常に動作します:私はそのようなコードを持っていた後

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

:私はこれらの行を追加し、 read_inputreverseまだ g小さな罰金ウィルに動作します...しかし、私は、このようなエラーを得た大きな入力ファイルで

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

main1の両方を含むので、その後、私は深い再帰を行う必要があります
g = reverse() 
TypeError: 'NoneType' object is not callable. 

私はread_input()reverse()を交換し、それが渡されたreverse()を呼び出しますが、read_input

+0

'...'ビットに 'reverse =(something)'が含まれていますか? – geoffspear

+0

いいえ、ちょうどinit辞書にデータを読み込んでいます。両方の関数は一度だけ呼び出されます – tata

+0

なぜf.readlines()の ''のために ''をやっていますか: ''?リストを作成するのではなく、反復する '' for f: ''に対して ''を実行するだけです。もっと効率的。 –

答えて

0

で同じエラーが発生した場合reはread_input()またはreverse()のどちらかで間違いかもしれません。実行された時のリターンGで シナリオ1

は、gがすでにあるNoneTypeリターングラム文を達するためにそれらを防ぐ機能を持つ欠陥があります
シナリオ2


いずれにしても、本当にお手伝いするには、コードのうち、特に機能部分が必要になります。

関連する問題