本地持久文件系统

以持久方式存储数据很有用,以便在设备重新启动之间保持完整。在传统计算机上,这通常是通过一个文件系统来实现的,该文件系统由保存原始数据的命名文件和包含文件的命名目录组成。Python 支持使用此类文件系统所需的各种操作。

但是,由于 micro:bit 在硬件和存储容量方面都是有限的设备,因此 MicroPython 提供了在设备上持久保存数据所需的一小部分功能。由于内存限制,文件系统上大约有 30k 可用存储空间。

警告

重新刷新设备将破坏您的数据。

由于文件系统存储在 micro:bit 的闪存中,刷新设备会重写所有可用的闪存,因此如果刷新设备,您的所有数据都将丢失。

但是,如果您关闭设备,数据将保持不变,直到您将其删除(见下文)或重新刷新设备。

micro:bit 上的 MicroPython 提供了一个平面文件系统;即没有目录层次结构的概念,文件系统只是命名文件的列表。读出和写入通过标准Python实现文件 open 功能和所得类文件对象(表示该文件)的类型 TextIOBytesIO。处理文件系统上的文件的操作(例如,列出或删除文件)包含在 os 模块中。

如果文件以 .py 文件扩展名结尾,则可以导入它。例如,一个名为的文件hello.py 可以这样导入: import hello.

MicroPython REPL 中的示例会话可能如下所示:

>>> with open('hello.py', 'w') as hello:
...    hello.write("print('Hello')")
...
>>> import hello
Hello
>>> with open('hello.py') as hello:
...   print(hello.read())
...
print('Hello')
>>> import os
>>> os.listdir()
['hello.py']
>>> os.remove('hello.py')
>>> os.listdir()
[]
open(filename, mode='r')

返回一个文件对象,表示参数中命名的文件 filename。模式默认为 'r'这意味着以文本模式打开阅读。另一种常用模式是 'w'用于写入(如果文件已经存在,则覆盖文件的内容)。其他两种模式可与上述 't'模式结合使用:表示文本模式(用于读取和写入字符串)和'b' 表示二进制模式(用于读取和写入字节)。如果未指定这些, 't'则假定为(文本模式)。在文本模式下,文件对象将是TextIO. 在二进制模式下,文件对象将是 BytesIO. 例如,用于'rb' 从文件中读取二进制数据。

class TextIO
class BytesIO

这些类的实例代表 micro:bit 平面文件系统中的文件。TextIO 类用于表示文本文件。BytesIO 类用于表示二进制文件。除了 TextIO 处理字符串和 BytesIO 处理字节之外,它们的工作方式完全相同。

您不直接实例化这些类。相反,一个适当配置的类实例由上述 open 函数返回。

close()

刷新并关闭文件。如果文件已经关闭,则此方法无效。一旦文件关闭,对文件的任何操作(例如读或写)都会引发异常。

name()

返回对象表示的文件的名称。这将与filename 传递到调用 open实例化对象的函数的参数相同。

read(size)

从文件中读取并返回最多size字符作为单个字符串或size 字节。为方便起见,如果size未指定或 -1,则返回文件中包含的所有数据。比少size可能,如果有小于要返回的字符或字节size字符或字节尚待从文件中读取。

如果返回 0 个字符或字节,并且size不是 0,则表示文件结束。

MemoryError,如果发生异常size 大于可用RAM较大。

readinto(buf, n=-1)

将字符或字节读入缓冲区buf。如果n提供,则将n字节数或字符数读入缓冲区buf

readline(size)

从文件中读取并返回一行。如果size 指定,则最多size读取字符。

行终止符始终'\n' 用于字符串或b'\n' 字节。

writable()

True如果文件支持写入,则返回。如果False, write()将提高OSError.

write(buf)

将字符串或字节写入buf 文件并返回写入的字符或字节数。