从文本文件中读取数字的Python方法

3
我知道这是一个简单的问题,但我卡住了。
file=open("record.txt","w+")
record = file.read()
print("The record is "+str(record)+"!!")

main code... 
file.write(str(reaction)) 
file.close()

我已经拿到了他的代码,文件里有一个0.433534145355的数字。但是当我执行打印命令+str(record)+时,只会输出The record is !!,而没有数字。这段代码有什么问题?是否有特殊的带小数位的代码,我不想使用int()函数。

调试 101:你检查过 record 是什么了吗? - Karoly Horvath
尽管我正在读取一个包含数字的文件,但当我执行print()时,记录中没有任何内容。 - Masa Tono
@MasaTono,你实际上想要做什么? - Padraic Cunningham
2个回答

6
正如这里所说的:
'w+'用于读写操作,如果文件不存在则创建,否则将被截断。流定位在文件开头。
所以,是的,您的文件也可以被打开进行读取,但它被截断了(即现在它的大小为零字节,为空),不再剩下任何要读取的内容。
本质上,"w"在"w+"中意味着模式是面向"写入"的,同时给你读取的选项(在需要寻找并读取已经写过的内容时非常有用。除非您进行写入操作,否则没有东西可以读取)
相反,您可以使用:
'r+' 用于读写操作。流在文件开头。
在这种情况下,"r"在"r+"中表示模式面向"读取",同时提供必要时寻找和写入的选项(当数据已经存在但可能需要更改时非常有用)

1
额外加分:解释一下实际上导致问题的原因。 - Padraic Cunningham
值得指出的是,w+ 只有在您想要在写入后回溯并读取时才真正有用。它总是会截断,因此除非您写入内容,否则将没有内容可读取。 - Padraic Cunningham
1
@PadraicCunningham完成,感谢您的建议。 - Pynchia

0
如果你想从文件中读取内容,你需要以读取模式打开它(r)。

但是我认为w+可以打开文件进行写入和读取,如果我从网站上正确地阅读了的话。 - Masa Tono
@MasaTono,r+用于读取和写入,如果您想添加数据,请使用a - Padraic Cunningham
2
w+: Open for reading and writing. The file is created if it does not exist, otherwise it is truncated. - Pynchia
Pynchia所说的。请参阅https://dev59.com/6nM_5IYBdhLWcg3wPAfT#1466036,其中包含Python从C继承的所有(标准)文件模式的描述。 - PM 2Ring

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接