You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Raspberry Pi+Sense Hat测得的温湿度、气压数据追加写入文件

问题原因

你将变量名放在了引号内部,Python会将引号包裹的内容全部识别为普通字符串,不会解析为对应变量的值。

原有代码问题修正

你的现有代码还存在几个需要调整的点:

  • 存在两个独立死循环,第二个休眠逻辑永远不会执行,采集频率不符合每分钟一次的需求
  • 变量赋值错位:气压值赋给了温度变量,温度值赋给了气压变量,会导致采集数据完全错误
  • 重复导入time、sleep模块,且每次循环都重复实例化SenseHat对象,浪费资源
  • 手动开关文件容易出现资源泄露,推荐使用with上下文管理器自动处理文件操作

完整可运行代码

from sense_hat import SenseHat
from time import time, sleep, strftime, localtime

# 全局实例化一次SenseHat即可
sense = SenseHat()

while True:
    # 每分钟整点触发采集
    sleep(60 - time() % 60)
    
    # 采集并保留1位小数,变量对应正确
    temp = round(sense.get_temperature(), 1)
    pressure = round(sense.get_pressure(), 1)
    humidity = round(sense.get_humidity(), 1)
    
    # 终端打印+屏幕滚动显示
    print(f"温度:{temp}℃ 气压:{pressure}hPa 湿度:{humidity}%")
    show_msg = f"Temperature: {temp} Pressure: {pressure} Humidity: {humidity}"
    sense.show_message(show_msg, scroll_speed=0.05)
    
    # 追加写入文件,新增时间戳方便后续追溯
    collect_time = strftime("%Y-%m-%d %H:%M:%S", localtime())
    with open("sensedata.txt", "a", encoding="utf-8") as f:
        # 每行记录格式:采集时间,温度,气压,湿度
        f.write(f"{collect_time},{temp},{pressure},{humidity}\n")

关键逻辑说明

  • 字符串拼接采用f-string语法,变量放在{}中即可自动解析为对应的值,不需要放入引号内部
  • 如果你习惯用原始的字符串拼接写法,写入行也可以替换为:
    f.write(collect_time + "," + str(temp) + "," + str(pressure) + "," + str(humidity) + "\n")
    
  • with语句执行完成后会自动关闭文件,不需要手动调用close()方法
  • 生成的sensedata.txt可以直接用Excel等表格工具打开做后续数据分析

内容的提问来源于stack exchange,提问作者speedee_doge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:54:05