0

我需要编写一个 python 脚本来对文本文件中的十进制数求和(一行,一个数字)。我写了这个脚本:

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语句处理自动退出嵌套块后关​​闭文件,
  • 您可以简单地遍历打开的文件,在每次迭代中获取一行(以换行符结尾),
  • 默认modeopen()r”,所以你可以省略它,
于 2012-10-03T22:13:31.830 回答
1

想想readlines. 它不是字符串,而是字符串列表。

您需要以某种方式从文件中选择一个字符串,或者遍历所有行。

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