2012-03-01 72 views
1

我的MemoryError当我在我的HTC Desire运行SL4A下面的代码:Python的代码的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。帮助赞赏。 (代码是麻省理工学院开放式课程,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. 

而其余代码工作得很好。有谁知道这是什么原因造成的?

回答

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 2012-03-01 04:27:51

+0

@lllluuukke在尝试打印加载的字数之前,试试'inFile.close()'? (使用'with open()'为你关闭文件。) – gary 2012-03-01 04:37:43

+0

尝试了'open()',仍然有'MemoryError' – lllluuukke 2012-03-01 05:14:59