为什么我在使用碎肉时在地图减少中不断出现这个错误



我只想从大约7500个文件中计算单词计数,并在某些条件下计算单词计数。程序是这样的。

import glob
import mincemeat
text_files = glob.glob('../fldr/2/*')
def file_contents(file_name):
f = open(file_name)
try:
    return f.read()
finally:
    f.close()
source = dict((file_name, file_contents(file_name))
          for file_name in text_files)
def mapfn(key, value):
  for line in value.splitlines():
    list2 = [ ]
    for temp in line.split("::::"):
        list2.append(temp)
    if (list2[0] == '5'):
        for review in list2[1].split():
            yield [review.lower(),1]
def reducefn(key, value):
  return key, len(value)
s = mincemeat.Server()
s.datasource = source
s.mapfn = mapfn
s.reducefn = reducefn
results = s.run_server(password="wola")
print results

我在运行这个程序时遇到的错误是

error: uncaptured python exception, closing channel <__main__.Client connected at 0x250f990> 
(<type 'exceptions.IndexError'>:list index out of range 
 [C:Python27libasyncore.py|read|83] 
 [C:Python27libasyncore.py|handle_read_event|444] 
 [C:Python27libasynchat.py|handle_read|140] 
 [mincemeat.py|found_terminator|96]
 [mincemeat.py|process_command|194] 
 [mincemeat.py|call_mapfn|170] 
 [projminc2.py|mapfn|21])

查看列表2中的内容,例如进行

print(list2)

或者使用调试器。如果你这样做,你会看到list2只有一个元素,所以list2[1]是无效的。

(你真的不想在":::"上分开——这是你剧本中的一个拼写错误)。

相关内容

  • 没有找到相关文章

最新更新