我有一个项目,我将使用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文件的任何信息也可以解决问题。 非常感谢您的帮助,谢谢!
答案 0 :(得分: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()
这将读取先前在文件上的数据,将新数据附加到此文件并将数据重写回文件。
希望这有帮助!
答案 1 :(得分: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)
答案 2 :(得分: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()