Python中无需多份.txt文件保存温室传感器数据的方案咨询
温室监测系统重启数据丢失的非多文件解决方案
下面是几种不用新增大量文本文件的持久化方案,适配你的需求:
单个结构化文本文件(JSON/CSV)
把分钟级temp数据和小时级hourly数据合并到同一个JSON或CSV文件里,不用分开两个txt。
比如用JSON的话,可采用对象结构分别存储两组数据:{ "temp": [{"time": "2024-05-20 14:01:00", "temp": 24.7}, ...], "hourly": [{"time": "2024-05-20 14:00:00", "avg_temp": 24.5}, ...] }每次更新数据时,先读取文件解析出结构,更新对应数组后再写回文件。CSV则可以加一列标识数据类型(比如"temp"或"hourly"),每行存储一条时间-温度记录,同样单文件搞定。这种方案无额外依赖,用文本编辑器就能直接查看内容。
轻量级嵌入式数据库(SQLite)
用SQLite创建一个单文件数据库,建两张表分别存分钟和小时数据:CREATE TABLE IF NOT EXISTS temp_records ( record_time DATETIME PRIMARY KEY, temperature REAL ); CREATE TABLE IF NOT EXISTS hourly_records ( record_time DATETIME PRIMARY KEY, avg_temperature REAL );传感器读取温度后插入
temp_records表,每小时计算平均值插入hourly_records表。重启后直接从数据库查询数据恢复数组即可。SQLite的优势是数据持久化可靠,支持高效查询,而且整个数据库就是一个独立文件,不会产生冗余文件。Python内置shelve键值存储
如果你用Python开发系统,shelve模块可以直接把Python数组、字典这类对象存在单个文件里,操作和字典几乎一样:import shelve # 存储数据 with shelve.open('greenhouse_store') as store: store['temp'] = temp_array store['hourly'] = hourly_array # 重启后恢复数据 with shelve.open('greenhouse_store') as store: temp_array = store.get('temp', []) hourly_array = store.get('hourly', [])不用手动做序列化/反序列化,直接操作原生Python对象,单文件存储,上手成本低。
内存映射文件
把数组数据写入内存映射文件,系统会自动同步数据到磁盘。重启后重新映射该文件就能恢复数据。这种方案适合对读写性能要求高的场景,但需要自己处理数据的结构和序列化逻辑,相对复杂一些,但依然是单文件实现。
内容的提问来源于stack exchange,提问作者xampL
相关产品推荐
相关产品推荐

