当脚本在tmux中运行时,使用python编写传感器读取

当脚本在tmux中运行时,使用python编写传感器读取,python,python-3.x,raspberry-pi,sensors,tmux,Python,Python 3.x,Raspberry Pi,Sensors,Tmux,如果以前有人问过这个问题,我深表歉意,但我找不到我一直在寻找的解决方案/信息 所以:我正在运行一个raspberry pi 0W,其中有一个python脚本,读取4个温度传感器,监测家里的一些东西。我每2分钟读取一次这些传感器,并将输出写入CSV(目前对我来说已经足够了)。当我ssh我的PI并在TMUX中运行我的脚本时,我意识到当调用我的“Sensordata.csv”时,它只会在我在TMUX会话中关闭脚本后更新。理想情况下,我希望在每个轮询周期后更新“Sensordata.CSV”文件 我相信

如果以前有人问过这个问题,我深表歉意,但我找不到我一直在寻找的解决方案/信息

所以:我正在运行一个raspberry pi 0W,其中有一个python脚本,读取4个温度传感器,监测家里的一些东西。我每2分钟读取一次这些传感器,并将输出写入CSV(目前对我来说已经足够了)。当我ssh我的PI并在TMUX中运行我的脚本时,我意识到当调用我的“Sensordata.csv”时,它只会在我在TMUX会话中关闭脚本后更新。理想情况下,我希望在每个轮询周期后更新“Sensordata.CSV”文件

我相信这不是代码,因为我的代码在shell中正常运行时打开、写入和关闭文件。希望有人能帮我()


我不认为Tmux是问题的一部分

尝试删除脚本中的以下3行代码:

time_for_csv=time.asctime( time.localtime(time.time()))
f=open("Sensordata.csv", "a")
c=csv.writer(f)
csv的时间未使用

打开文件进行写入或追加时,更安全的方法是使用以下命令:

with open("Sensordata.csv", "a") as f:
    c=csv.writer(f)
    c.writerow([timestampStr, temp, temp2, temp3, tempout])
即使引发异常,文件对象也将始终关闭。您不必显式地关闭它。看


我猜你在脚本中间打开一个文件对象会使文件打开,然后在<代码>之后重新定义<代码> f>代码>“\uuuu main\uuuu。保持文件对象处于打开状态可能会产生不可预测的结果,就像您正在经历的结果一样。

?我也尝试过nohup和disown过程-与上述问题相同,csv在每个轮询周期后都不会更新??考虑每2分钟运行一个CRON工作:@ VPFB DaJueMe=)谢谢,这可能是一项工作。(然而,这并不能真正解决或回答这个问题,为什么在TMUX中运行脚本时csv没有更新)非常感谢,去掉中间部分才是问题所在。我用WITHOPEN选项清理了代码——很好,我知道。不用客气。很高兴我能帮忙。
with open("Sensordata.csv", "a") as f:
    c=csv.writer(f)
    c.writerow([timestampStr, temp, temp2, temp3, tempout])