0

我有一个项目,我必须使用 jQuery AJAX 请求绘制图形,方法是使用 python 读取不断更新的 .txt 文件。但是,我真正想做的是保留文件的内容,直到下一个数据被覆盖到文件中。但是,当我尝试读取此数据堆栈文件时, - 因为 python 脚本不断用新信息覆盖它- 遗憾的是,我每次都无法看到内容。

这是我到目前为止所做的:

mydatatosend = str(distance0)+","+str(time0)+","+str(distance1).....)
print mydatatosend
text_file = open("sensor_file.inc","a")
text_file.write(mydatatosend)
text_file.close()

作为记录,我已经尝试过类似 FTP 上传的解决方案,但我的 FTP 服务器有问题,所以现在不是一个选项。此外,有关如何将参数传递给 php 文件的任何信息也可以解决问题。我真的很感谢你的帮助,已经谢谢了!

4

3 回答 3

0

你试过这个吗?

new_text = str(distance0)+","+str(time0)+","+str(distance1).....) 
print new_text

text_file = open("sensor_file.inc","rw")
previous_text = text_file.read()

total_text = previous_text + new_text    

text_file.write(total_text)
text_file.close()

这会读取文件上先前的数据,将新数据附加到此文件并将数据重写回文件。

希望这可以帮助!

于 2013-06-11T04:16:44.183 回答
0

就地更新文件的标准做法是编写一个新文件(使用不同的名称),然后os.rename()将新文件作为原始文件名。文件系统将执行“原子”操作,因此该名称只有一个文件可用,并阻止所有读取,直到重命名完成。干净又快速。

import os
file_name = "sensor_file.inc"
new_file_name = "sensor_file.inc-new"
text_file = open(new_file_name,"w")
text_file.write(mydatatosend)
text_file.close()
os.rename(new_file_name, file_name)
于 2013-06-11T04:36:23.533 回答
0

事实证明这比我想象的要简单。当我将“a”更改为“w+r”时,问题就解决了

这是工作的最终代码:

mydatatosend = str(distance0)+","+str(time0)+","+str(distance1).....)
print mydatatosend
text_file = open("sensor_file.inc","w+r")
text_file.write(mydatatosend)
text_file.close()
于 2013-06-11T11:45:17.373 回答