0

テキスト ファイル内の 10 進数を合計するための Python スクリプトを作成する必要があります (1 行、1 つの数値)。私はこのスクリプトを書きました:

s = float()
f = open('/home/ale/file_numbers', 'r').readlines()
N = len(f)-1
for i in range(0,N):
    s += float(f)

しかし、問題は命令に s += float(f) あり、返されるエラーは次のとおりです。

TypeError: float() argument must be a string or a number

そのような問題を解決する方法がわかりません 何か提案はありますか?

4

2 に答える 2

3

これは行のリストを返します (名前が示すように):

open(...).readlines()

ただし、行を直接反復処理できます。

s = float()
f = open('/home/ale/file_numbers', 'r')
for line in f:
    s += float(line)

念のため、開いた後にファイルを作成しない場合は、.close()次のコードを使用できます。

s = float()
with open('/home/ale/file_numbers') as f:
    for line in f:
        s += float(line)

それの訳は:

  • withステートメントは、ネストされたブロックから自動的に出た後にファイルを閉じる処理を行います。
  • 開いているファイルを単純に繰り返し、各繰り返しで1行(改行記号で終了)を取得することができます。
  • デフォルトmodeの foropen()は " r" なので、省略できます。
于 2012-10-03T22:13:31.830 に答える
1

によって何が返されるか考えてみてくださいreadlines。文字列ではなく、文字列のリストです。

何らかの方法でファイルから単一の文字列を選択するか、すべての行を反復処理する必要があります。

s += float(f[0])
于 2012-10-03T22:13:10.560 に答える