===== Эксперимент 43. Файловая система. Файловые операции ===== Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имен файлов (и каталогов), максимальный возможный размер файла и раздела, набор атрибутов файла. Файловая система связывает носитель информации с одной стороны и интерфейс для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация на носителе, так же как и о том, на каком физическом типе носителя (CD, жёстком диске, магнитной ленте, блоке флеш-памяти или другом) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске). Мы уже знаем, что микроконтроллер, на базе которого построен наш конструктор имеет Flash- память с организованной на ней файловой системой. Человек может получить доступ к этой "флешке", например, через файловый менеджер среды программирования EsPy. Но наши программы тоже могут работать с файловой системой. Мы уже загружали библиотеки и даже создавали файл с данными с температурных датчиков. Но это не все возможности. Давайте познакомимся с файловой системой поближе. Для работы с файловой системой необходимо подключить библиотеку: import os После этого можно работать с функциями файловой системы. Для начала получим список файлов: import os files = os.listdir() for file in files: print(file) Программы вывела в терминал список файлов. В вашем случае вывод может отличаться. boot.py init.mpy lcd_api.py esp8266_i2c_lcd.py mfrc522.mpy temp_data.csv Мы видим список файлов. Однако нам может требоваться допонительная информация, например размер файлов. Для этого есть функция ''ilistdir()'' import os files = os.ilistdir() for file in files: print(file) Программа выводит список файлов: Имя, тип (файл или директория), 0, размер файла в байтах ('boot.py', 32768, 0, 252) ('init.mpy', 32768, 0, 225) ('lcd_api.py', 32768, 0, 6882) ('esp8266_i2c_lcd.py', 32768, 0, 3293) ('mfrc522.mpy', 32768, 0, 2392) ('temp_data.csv', 32768, 0, 820) Теперь давайте создадим директорию с именем dir: ''os.mkdir('dir')''. Если такая директория уже есть, то получим сообщение об ошибке. Если все в порядке, то директория будет создана. Теперь повторим вывод функции ilistdir() ('boot.py', 32768, 0, 252) ('init.mpy', 32768, 0, 225) ('lcd_api.py', 32768, 0, 6882) ('esp8266_i2c_lcd.py', 32768, 0, 3293) ('mfrc522.mpy', 32768, 0, 2392) ('temp_data.csv', 32768, 0, 820) ('dir', 16384, 0, 0) Как видно, директория dir создалась. В файловых системах есть такое понятие как //путь//. Это последовательность вложенных директорий от корня файловой системы до какого-либо файла или директории. Давайте посмотрим путь до текущей директории: import os uos.getcwd() Результат: '/' Текущей директорией является / - это значит, что мы находимся в корне файловой системы. Давайте перейдем в недавно созданную нами директорию dir и повторно выведем текущую директорию import os os.chdir('/dir') uos.getcwd() Результат: '/dir' Это значит, что мы перешли в директорию /dir и сейчас она является текущей директорией. Если мы сейчас запросим список файлов, то получим пустой ответ так как в директории /dir у нас нет файлов. Мы можем получить список файлов в корне или в другой директории, если укажем конкретный путь, например: files = os.listdir('/') Вернемся обратно в корень файловой системы и удалим директорию dir: import os os.chdir('/') os.rmdir('dir') Директорию нельзя удалить, если в ней есть вложенные файлы или директории. Сначала нужно удалить их. Если все в порядке — директория удалится. Если сейчас запросить список файлов в корне, то увидим, что директории dir больше нет. Также мы можем удалить файл uos.remove('filename') или переименовать файл uos.rename('old_name', 'new_name') [[https://docs.micropython.org/en/latest/library/uos.html|Подробная информация о работе с файловой системой]]