我有一个非常简单的程序。代码:
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。
答案 0 :(得分:12)
money
是file
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)