数据记录
log 模块可将数据写入保存在 micro:bit MICROBIT USB 盘中的 MY_DATA 文件。
数据以表格形式组织,可用浏览器打开查看与绘图(将 micro:bit 连接电脑后,在 MICROBIT 盘中找到日志文件)。


函数
set_labels(*labels, timestamp=log.SECONDS)
设置日志表头。
接受任意数量的位置参数,每个参数对应一列,例如 log.set_labels("X", "Y", "Z")。
理想情况下在写入任何数据前只调用一次,以固定表头。
若程序启动时日志已存在,或多次调用本函数,会与已有表头比对;若出现新列名,会追加一行新表头。
默认第一列为时间戳,可通过 timestamp 选择单位,例如 log.set_labels("temp", timestamp=log.MINUTES)。
参数
*labels:列名,每个位置参数对应表头一列。timestamp:时间戳单位,可为log.MILLISECONDS、log.SECONDS、log.MINUTES、log.HOURS、log.DAYS,或None禁用时间戳。默认log.SECONDS。
set_mirroring(serial)
配置是否将日志行镜像到串口输出。默认关闭;开启后每写入一行都会打印到串口。
参数
serial:True开启串口镜像。
delete(full=False)
删除日志内容(含表头)。之后需再次调用 set_labels() 才能恢复表头。
两种擦除模式:
full=True:从物理存储中完全擦除。full=False(默认):快速失效数据,不物理清除。
参数
full:True为完整擦除,False为快速擦除。
add(data_dictionary, /, *, **kwargs)
向日志追加一行数据。
两种写法:
- 关键字参数,参数名即列名:
log.add(X=compass.get_x(), Y=compass.get_y()) - 字典,键为列名:
log.add({"X": compass.get_x(), "Y": compass.get_y()})
字典写法便于使用空格等特殊字符作为列名。
未在 set_labels() 或此前 add() 中出现的新列名会触发表头扩展;已有列名但本次未提供的列会在该行留空。
异常:日志已满时抛出 OSError,错误码 28(ENOSPC),表示设备无剩余空间。
示例
最小示例
每 5 秒记录一次温度:
from bibo import *
import log
log.set_labels("temp", timestamp=log.SECONDS)
@run_every(s=5)
def log_temp():
log.add(temp=temperature())
while True:
sleep(100)
完整 API 演示
from bibo import *
import log
log.set_labels("x", "y", "z")
log.set_mirroring(True)
while True:
log.add(
x=accelerometer.get_x(),
y=accelerometer.get_y(),
z=accelerometer.get_z(),
)
if button_a.was_pressed():
log.delete()
log.set_labels("x", "y", "z")
sleep(1000)
在比卜创造 Python 编辑器中烧录运行,摇动 micro:bit 一段时间后连接电脑,在 MICROBIT 盘中查看 MY_DATA 文件。