Файловая система
Полезно хранить данные так, чтобы они оставались неповрежденными между перезапусками устройства. На традиционных компьютерах это достигается файловой системой, состоящей из именованных файлов, содержащих необработанные данные, и именованные каталоги, содержащие файлы. 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
в файл и верните количество символов или байтов, записанных.