本地持久文件系统¶
以持久方式存储数据很有用,以便在设备重新启动之间保持完整。在传统计算机上,这通常是通过一个文件系统来实现的,该文件系统由保存原始数据的命名文件和包含文件的命名目录组成。Python 支持使用此类文件系统所需的各种操作。
但是,由于 micro:bit 在硬件和存储容量方面都是有限的设备,因此 MicroPython 提供了在设备上持久保存数据所需的一小部分功能。由于内存限制,文件系统上大约有 30k 可用存储空间。
警告
重新刷新设备将破坏您的数据。
由于文件系统存储在 micro:bit 的闪存中,刷新设备会重写所有可用的闪存,因此如果刷新设备,您的所有数据都将丢失。
但是,如果您关闭设备,数据将保持不变,直到您将其删除(见下文)或重新刷新设备。
micro:bit 上的 MicroPython 提供了一个平面文件系统;即没有目录层次结构的概念,文件系统只是命名文件的列表。读出和写入通过标准Python实现文件 open
功能和所得类文件对象(表示该文件)的类型
TextIO
或 BytesIO
。处理文件系统上的文件的操作(例如,列出或删除文件)包含在
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
文件并返回写入的字符或字节数。
-