Python 2.6.8 の値から構築されたハッシュを (匿名化) しました。
sys.stderr.write('#' + str(dictionary['Field 4']) + '#\n')
kpis_found.append(float(int(dictionary['Field 1']), 1) *
max(float(dictionary['Field 2']), 1) *
max(float(dictionary['Field 3']), 1) *
max(float(dictionary['Field 4']), 1) *
max(float(dictionary['Field 5']), 1))
私が得る出力は次のとおりです。
[Fri Jul 13 09:04:44 2012] [error] [client ::1] #3#
[Fri Jul 13 09:04:44 2012] [error] [client ::1] Traceback (most recent call last):
[Fri Jul 13 09:04:44 2012] [error] [client ::1] File "/Users/jonathan/mirror/civic/google_maps/index.cgi", line 357, in <module>
[Fri Jul 13 09:04:44 2012] [error] [client ::1] max(float(dictionary['Field 4']), 1) *
[Fri Jul 13 09:04:44 2012] [error] [client ::1] TypeError: float() takes at most 1 argument (2 given)
私の知る限りでは、CSV ファイルは (通常) int に変換可能な文字列、または (場合によっては) float に変換可能な文字列を生成します。NULL が発生した場合は、診断が容易になるはずです。問題のフィールドが「3」であることを確認するデバッグ出力が表示されます。
これはどのように TypeError を取得していますか? 計算していないことを確認するために括弧を実行しました
max(float(foo, bar))
代わりに計算する
max(float(foo), bar)
どんな洞察も大歓迎です。