通过python将数据记录器中的实时数据保存到csv文件中



我有一个数据记录器来记录温度。我想把这些数据和epoch时间保存在csv文件中。我尝试了以下代码,没有错误报告,但csv文件是空的。有人能帮我解决这个问题吗?

import board
import busio
import adafruit_mcp9600
import time
i2c = busio.I2C(board.SCL,board.SDA,frequency = 100000)
mcp = adafruit_mcp9600.MCP9600(i2c, 0x60, tctype = "J")

with open ("/home/pi/Documents/test.csv", "a") as log:
while True:
temp = mcp.temperature
temptime = time.time()
log.write("{0},{1}n".format(str(temptime),str(temp)))
time.sleep(1)

假设您正在导入的库工作正常,我认为这是因为写入程序没有刷新缓冲区,所以看起来什么都没有写入。

解决方案是在每次写入日志后使用log.flush()进行刷新。

尝试一个更简单的例子:

A(

import time

def go():
i = 0
with open("/home/some/dir/test.csv", "a") as nice:
while True:
nice.write(f"hello,{i},{time.time()}n")
i += 1
time.sleep(5)

if __name__ == "__main__":
go()

B(

import time

def go():
i = 0
while True:
with open("/home/some/dir/test.csv", "a") as nice:
nice.write(f"hello,{i},{time.time()}n")
i += 1
time.sleep(5)

if __name__ == "__main__":
go()

当我在情况A中刷新文件时,似乎不会写入新行。不过,情况是B。

如果我修改案例A(并在每次写入后添加nice.flush(),它就解决了这个问题。

以上两个区块只是为了展示您所看到的内容。我不是建议你这样做。最终,我不建议这样做,而是使用logging包,并在您确实试图创建日志文件的情况下配置一个合适的记录器。

最新更新