os(操作系统)

MicroPython包含一个基于python标准库的os模块。它用于访问操作系统相关功能的内容。

由于MicroPython中没有操作系统,因此该模块提供了与文件系统管理相关的功能以及当前系统有关的信息。

要访问此模块,您需要:

import os

函数

os.listdir()

返回设备上文件系统中所包含的所有文件的名称列表。

os.remove(filename)

删除命名为filename的文件。如果文件不存在将会发生OSError异常。

os.size(filename)

返回命名为filename的文件的大小(以字节为单位)。如果文件不存在将会发生OSError异常。

os.uname()

返回当前操作系统的信息。返回值是一个具有五个属性的对象:

sysname - 操作系统名称
nodename - 网络上的机器名称(实现定义)
release - 操作系统发布
version - 操作系统版本
machine - 硬件标识符

注意:

MicroPython中没有底层操作系统。因此,uname函数返回的信息对于版本控制的细节是非常有用的。

Local Persistent File System(本地文件系统)

在断电情况下仍能保持所存储的数据信息。在传统的计算机上,这通常由一个包含保存原始数据的命名文件和包含文件的命名目录组成的文件系统来实现。Python支持使用这些文件系统所需的各种操作。

然而,由于microbit在硬件和存储容量方面都是有限的,所以MicroPython提供了在设备上保留数据所需的一小部分功能。由于内存限制,文件系统上有大约30k的可用存储空间。

警告:

如果您关闭或重启设备,数据将保持不变,直到您将数据删除或重新烧写固件。重新烧写固件,会丢失你原有的数据。由于文件系统存储在microbit的闪存中,设备将重写所有可用的闪存。该过程中,所有数据都将丢失。

microbit提供了一个平面文件系统:即没有目录层次结构的概念,文件系统只是一个命名文件的列表。读出和写入一个文件是通过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’)

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

class TextIO 
class BytesIO

这些类的实例表示microbit平面文件系统中的文件。TextIO类用于表示文本文件。BytesIO类用于表示二进制文件。它们的工作方式完全相同,除了TextIO与字符串,而BytesIO与字节。

你不必直接实例化这些类。相反,通过上述open功能即可返回类的实例。

close()

刷新并关闭文件。如果文件已关闭,则此方法不起作用。文件关闭后,文件上的任何操作(例如阅读或写入)将引发异常。

name()

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

read(size)

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

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

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

readinto(buf,n=-1)

将字符或字节读入缓冲区buf。如果n参数被传入,读取n缓冲区中的字节数或字符数buf。

readline(size)

从文件读取并返回一行。如果size未指定,会读取整行。

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

writable()

如果文件可写,返回True,否则返回False。

write(buf)

将字符串或字节串写到文件中,返回写进去的字节数。