1

HTC Desireのsl4aで次のコードを実行すると、MemoryErrorが発生しました。

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.6KBです。感謝します。(コードはMIT OpenCourseWare、CS 6.00の一部です-コンピュータサイエンスとプログラミングの紹介、問題セット5、ps5_ghost.py)

これはおそらくsl4aのバグですか?

[更新]: 私は次のことを試みました:

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.

そして、残りのコードは正常に機能しました。誰がこれを引き起こしたのか知っていますか?

4

1 に答える 1

0

この質問 (巨大な入力ファイル サイズによるメモリ エラー) に対する回答が役立つ場合があります。以下は、その質問に対するティムの回答から改作されています。

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

また、デバッグに関しては、 を削除して、wordlist.append(line.strip())その行がメモリ エラーを引き起こしているかどうかを判断したり、(より可能性が高い) ファイル内の各行を開いたりすることをお勧めします。

于 2012-03-01T04:25:39.333 に答える