2012-03-01 6 views
1

でMemoryErrorを取得します。それは印刷した後Pythonコードは、私は私のHTCの欲望にsl4aで次のコードを実行するとき、私はMemoryErrorを得たsl4a

def load_words(): 
    print "Loading word list from file..." 
    inFile = open(words.txt, 'r', 0) 
    wordlist = [] 
    for line in inFile: 
     wordlist.append(line.strip()) 
    print " ", len(wordlist), "words loaded.\n" 
    return wordlist 

「をファイルから読み込んで単語リストを...」、それは

を与えます
Traceback (most recent call last): 
    File "words.txt", line 92, in <module> 
     wordlist = load_words() 
    File "words.txt", line 29, in load_words 
     for line in inFile: 
MemoryError 

ところで、 "words.txt"というファイルには83667語の単語があり、サイズは633.6 KBです。ヘルプは高く評価しました。 (このコードはMIT OpenCourseWareの一部で、CS 6.00 - コンピュータサイエンスとプログラミング入門、問題セット5、ps5_ghost.py)

これはおそらくsl4aのバグですか?私は次のことを試してみました :

[UPDATE]

def load_words(): 
    print "Loading word list from file..." 
    inFile = open(words.txt, 'r', 0) 
    wordlist = [] 
    try: 
     for line in inFile: 
      wordlist.append(line.strip()) 
    except MemoryError: 
     print 'Oops...' 
    print " ", len(wordlist), "words loaded.\n" 
    return wordlist 

その後は、魔法のように、私は

Loading word list from file... 
Oops... 
    83667 words loaded. 

そして残りのコードがうまく働いなりました。これを引き起こした原因は誰にも分かりますか?

答えて

0

この質問の答え(Memory error due to the huge input file size)が役立ちます。以下は、その質問へのティムの答えから構成されている:

wordlist = [] 
with open("words.txt") as inFile: 
    for line in inFile: 
     wordlist.append(line.strip()) 

また、デバッグの観点から、あなたはそのラインがメモリエラーを引き起こし、または(可能性が高い)されているかどうかを判断しようとするwordlist.append(line.strip())を削除することもできますファイル内の各行を開きます。

+0

ありがとうございました。私は実際に 'wordlist.append(line.strip())の前に' print line'を置こうとしましたが、83667すべての単語が出力されました。また、私の入力ファイルは1.2GBのモンスターよりもかなり小さいです... – lllluuukke

+0

@lllluuukke読み込まれた単語の数を印刷する前に 'inFile.close()'を試してみてください。 ( 'open()でファイルを閉じます。) – gary

+0

' open() 'と試しても、' MemoryError' – lllluuukke

関連する問題