Python:TypeError:float()参数必须是字符串或数字

时间:2012-10-03 22:11:09

标签: python file

我需要编写一个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

我无法弄清楚如何解决这个问题 有什么建议吗?

2 个答案:

答案 0 :(得分: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语句在您自动退出嵌套块后处理关闭文件,
  • 你可以简单地遍历打开的文件,在每次迭代中获得一行(以换行符号结尾),
  • mode的默认open()为“r”,因此您可以省略它,

答案 1 :(得分:1)

考虑readlines返回的内容。它不是字符串,而是字符串列表。

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

s += float(f[0])