Файловая система

Полезно хранить данные так, чтобы они оставались неповрежденными между перезапусками устройства. На традиционных компьютерах это достигается файловой системой, состоящей из именованных файлов, содержащих необработанные данные, и именованные каталоги, содержащие файлы. Python поддерживает различные операции, необходимые для работы с такими файловыми системами.

Поскольку micro:bit является микроконтроллером, емкость хранилища MicroPython предоставляет небольшой набор функций, необходимых для сохранения данных на устройство. Из-за ограничений памяти есть приблизительно 30 КБ доступно в файловой системе.

Предупреждение

Перепрошивка устройства УНИЧТОЖИТ ВАШИ ДАННЫЕ.

Поскольку файловая система хранится во флэш-памяти micro:bit и перепрошивка устройства перезаписывает всю доступную флэш-память поэтому все ваши данные будут потеряны.

Однако, если вы выключите устройство, данные останутся нетронутыми до тех пор, пока Вы либо удаляете их, либо перепрошиваете устройство.

MicroPython на micro:bit обеспечивает простую файловую систему; то есть нет понятие иерархии каталогов, файловая система — это просто список именованных файлов. Чтение и запись файла осуществляется с помощью стандартной Python команды``open``. и результирующий файловый объект типом TextIO или BytesIO. Операции по работе с файлами в файловой системе содержатся в модуле

os module.

Если файл заканчивается расширением .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' означает двоичный режим (для чтения и записи байтов). В текстовом режиме файловый объект будет экземпляр TextIO. В двоичном режиме файловый объект будет экземпляр BytesIO.

class TextIO
class BytesIO

Экземпляры этих классов представляют файлы micro:bit. Класс TextIO используется для представления текстовых файлов. BytesIO класс используется для представления двоичных файлов. Они работают точно так же за исключением того, что TextIO работает со строками, а BytesIO работает с байтами.

Вы не создаете экземпляры этих классов напрямую. Скорее, надлежащим образом сконфигурированный экземпляр класса возвращается функцией open описано выше

close()

Закроет файл. После закрытия файла любая операция над файлом вызовет исключение.

name()

Возвращает имя файла, который представляет объект. Это будет то же, что и аргумент filename, переданный в вызов open, создавшая экземпляр объекта.

read(size)

Читает и возвращать символов size в виде одной строки или size байтов из файла. Для удобства, если size не указано или -1, возвращаются все данные, содержащиеся в файле.

Если возвращается 0 символов или байтов, а size не равен 0, это указывает на конец файла.

Исключение MemoryError произойдет, если size больше, чем доступная оперативная память.

readinto(buf, n=- 1)

Прочитать символы или байты в буфер buf. Если указано n, прочитать n байтов или символов в буфер buf.

readline(size)

Прочитать и вернуть одну строку из файла. Если указан size, будут прочтено столько строк.

Ограничитель строки всегда '\n' для строк или b'\n' для строк. байт.

writable()

Возвратите True, если файл поддерживает запись.

write(buf)

Запишите строку или байты buf в файл и верните количество символов или байтов, записанных.