微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Python 重复写入文件时,防止 SD 卡过早磨损

如何解决使用 Python 重复写入文件时,防止 SD 卡过早磨损

我正在从 RaspBerry Pi 中的外部设备收集数据,每次收集 4 个字节,大约每秒 100 个样本。数据写入安装了操作系统的 SD 卡。

目前,我使用以下代码

with open('data.dat','ab') as f:
    while True:
        sample_word = read_sample() # read 32 bits from a peripheral
        f.write(sample_word.to_bytes(4,'big'))

由于数据收集将运行几个星期,我不想通过连续写入相同的块来磨损 SD 卡。 open() 函数一个缓冲参数,这表明我不需要为缓冲添加自定义逻辑:

buffering 是一个可选整数,用于设置缓冲策略。传递 0 以关闭缓冲(仅在二进制模式下允许),1 以选择行缓冲(仅在文本模式下可用),以及一个大于 1 的整数以指示固定大小块缓冲区的大小(以字节为单位)。当没有给出缓冲参数时,认缓冲策略的工作方式如下:

  • 二进制文件以固定大小的块缓冲;缓冲区的大小是使用试探法来选择的,尝试确定底层设备的“块大小”并回退到 io.DEFAULT_BUFFER_SIZE。在许多系统上,缓冲区的长度通常为 4096 或 8192 字节。

启发式方法是否能很好地猜测 SD 卡块大小? io.DEFAULT_BUFFER_SIZE 是 8k。将大小传递给 buffing 参数是否更安全?如果是,最近的 SD 卡的最佳尺寸是多少?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。