1

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)

どんな洞察も大歓迎です。

4

1 に答える 1

7
float(int(dictionary['Field 1']), 1)

それはあなたの問題だと確信しています。あなたはで終わりますfloat(<int_value>, 1)

これは Python 3.1.2 でテストされましたが、...

>>> float(1, 1)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    float(1, 1)
TypeError: float() takes at most 1 argument (2 given)
于 2012-07-13T14:17:27.213 に答える