浮点数必须是字符串或数字?

时间:2015-05-29 14:08:51

标签: python type-conversion text-files

我有一个非常简单的程序。代码:

money = open("money.txt", "r")
moneyx = float(money)
print(moneyx)

文本文件money.txt仅包含以下内容:

0.00

我收到的错误消息是:

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

这很可能是一个简单的错误。有什么建议?我使用的是Python 3.3.3。

3 个答案:

答案 0 :(得分:12)

moneyfile object不是文件的内容。要获取内容,您必须read该文件。如果整个文件只包含那个数字,那么您只需要read()

moneyx = float(money.read())

否则,您可能希望使用readline()来读取单行,甚至可以尝试使用csv模块来处理更复杂的文件。

另外,完成后请不要忘记close()该文件,或使用with关键字自动关闭该文件。

with open("money.txt") as money:
    moneyx = float(money.read())
print(moneyx)

答案 1 :(得分:4)

Money是一个文件,而不是字符串,因此您无法将整个文件转换为float。相反,您可以执行以下操作,将整个文件读入列表,其中每行都是列表中的项目。你会循环并以这种方式转换它。

money = open("money.txt", "r")
lines = money.readlines()
for l in lines:
   moneyx = float(l)
   print(moneyx)

答案 2 :(得分:0)

在python中打开文件时,最好使用“with”。这样,在操作完成后隐式关闭文件

with open("money.txt", "r") as f:
    content = f.readlines()
    for line in content:
        print float(line)