3

コードは次のとおりです。

import glob
import mincemeat
import re

text_files = glob.glob('finalcount/1/*')
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():
        list1 = [ ]
        for temp in re.split('[\t]+',line):
            list1.append(temp)
        x = int(list1[1].strip());
        yield [list1[0],x]

def reducefn(key, value):
    return key, sum(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 0x25c1990> 
(<type 'exceptions.ValueError'>:invalid literal for int() with base 10: '' 
 [C:\Python27\lib\asyncore.py|read|83] 
 [C:\Python27\lib\asyncore.py|handle_read_event|444] 
 [C:\Python27\lib\asynchat.py|handle_read|140] 
 [mincemeat.py|found_terminator|97] 
 [mincemeat.py|process_command|195] 
 [mincemeat.py|call_mapfn|171] 
 [projcount.py|mapfn|21])

私が取り組んでいる入力ファイルは次のようになります。ここで、単語を追加し、別のファイルでそれらの横にある数字を合計したいと思います。

fawn    24
gai 1
nunnery 11
sowell  3
sonja   29
woods   591
clotted 1
spiders 84
hanging 522

に置き換えre.splitた後line.split()、このエラーが発生しました。

error: uncaptured python exception, closing channel <__main__.Client connected at 0x2531990> 
(<type 'exceptions.IndexError'>:list index out of range 
 [C:\Python27\lib\asyncore.py|read|83] 
 [C:\Python27\lib\asyncore.py|handle_read_event|444] 
 [C:\Python27\lib\asynchat.py|handle_read|140] 
 [mincemeat.py|found_terminator|97]
 [mincemeat.py|process_command|195] 
 [mincemeat.py|call_mapfn|171] 
 [projcount.py|mapfn|21]) 
4

1 に答える 1

1

別の機会にこのエラーが発生しました.Python 3.3を使用しているときに問題が発生することがわかりました.3.3を削除して2.7.5( http://python.org/download/ )をインストールしましたが、現在は正常に動作しています. :)

于 2013-09-25T12:18:18.157 に答える