Raspberry Pi Pico: работа с файлами и директориями (MicroPython)
Узнайте, как работать с файлами и директориями на Raspberry Pi Pico, программируемом на MicroPython. Мы рассмотрим, как создавать файлы и директории и выполнять операции с ними, сохраняя данные на постоянной основе в файловой системе Raspberry Pi Pico.
Файловая система позволяет обращаться к флеш-памяти Raspberry Pi Pico так же, как вы работаете с файлами и папками на своем компьютере. Вы можете читать, записывать, создавать и удалять файлы.
Изучение этой темы полезно для создания файлов конфигурации, постоянного сохранения значений переменных (даже после перезагрузки Raspberry Pi Pico), логирования данных или значений датчиков в файл, который можно использовать позже, и многого другого.
Необходимые условия – прошивка MicroPython
Для выполнения этого руководства на плате Raspberry Pi Pico должна быть установлена прошивка MicroPython. Также вам понадобится IDE для написания и загрузки кода на плату.
Рекомендуемой IDE для работы с MicroPython на Raspberry Pi Pico является Thonny IDE. Следуйте приведенному ниже руководству, чтобы узнать, как установить Thonny IDE, прошить прошивку MicroPython и загрузить код на плату.
Если вы только начинаете работу с Raspberry Pi Pico, ознакомьтесь с одним из этих руководств по началу работы:
Где купить Raspberry Pi Pico 2?
Плата Raspberry Pi Pico 2 W широко доступна во многих различных магазинах.
Темы, рассматриваемые в этом руководстве
В этом руководстве мы рассмотрим основные операции с файлами и директориями с использованием MicroPython-модуля os:
Операции с файлами:
Создание/открытие файла
Переименование файла
Удаление файла
Запись в файл
Дополнение файла
Чтение из файла
Операции с директориями:
Создание новой директории
Просмотр файлов в директории
Удаление директории
Модуль os в MicroPython
В MicroPython существует модуль os, который включает широкий спектр функций для управления файловыми операциями. Кроме того, он также содержит методы для таких задач, как управление директориями, доступ к переменным окружения и выполнение системных команд.
Модуль os включен по умолчанию в прошивку MicroPython. Более подробную информацию о модуле os можно найти в официальной документации.
Операции с файлами
Откройте новый файл в Thonny IDE. Мы покажем вам несколько небольших фрагментов кода, иллюстрирующих выполнение файловых операций. Запускайте фрагменты по мере их демонстрации, чтобы понять, как все работает, и увидеть возвращаемые результаты.
Создание файла
Создать файл в MicroPython так же просто, как использовать функцию open() и передать в качестве аргумента имя файла и режим открытия файла. Функция open() откроет файл, если он уже существует, или создаст новый файл, если его нет.
Различные режимы открытия файла – 'w', 'r' и 'a':
'w': режим записи – позволяет записывать в файл, перезаписывая существующее содержимое;'r': режим чтения – позволяет читать из существующего файла;'a': режим дополнения – добавление новых данных в конец существующего файла.
Для создания нового файла мы можем использовать режим записи ('w'). Следующая строка кода создаст новый файл в файловой системе Raspberry Pi Pico с помощью метода open(). Файл называется testFile.txt, но вы можете переименовать его как угодно.
file = open('testFile.txt', 'w')
Первый аргумент функции open() – это путь к файлу. Поскольку мы создаем файлы в корневой директории файловой системы Raspberry Pi Pico, мы можем просто передать имя файла.
Запустите эту строку на вашем Raspberry Pi, нажав на зеленую иконку запуска в Thonny.
Новый пустой файл testFile.txt был создан в файловой системе Raspberry Pi.
Чтобы проверить, был ли файл создан и сохранен, перейдите в File > Save as… > Raspberry Pi Pico. Вы увидите все файлы, сохраненные в файловой системе Pico, включая только что созданный testFile.txt.
Другой способ проверить файлы в файловой системе Raspberry Pi Pico в Thonny IDE – перейти в View > Files.
На левой боковой панели будут показаны файлы на вашем компьютере и файлы на Raspberry Pi Pico. Вы можете нажать на иконку с тремя полосками для обновления файловой системы.
Файл testFile.txt будет там, и вы можете дважды кликнуть по нему, чтобы открыть.
Просмотр файлов в файловой системе
Вместо выполнения этой процедуры для проверки содержимого файловой системы, мы можем использовать функцию из модуля os, которая выводит список всех файлов в директории. Для этого сначала нужно импортировать модуль os.
import os
Затем мы можем использовать следующую команду для проверки содержимого файловой системы:
os.listdir()
Для проверки создайте новый файл в Thonny IDE и скопируйте следующие две строки. Мы используем функцию print() для вывода результатов в Shell.
import os
print(os.listdir())
Запустите этот фрагмент кода. Он должен вывести текущее содержимое файловой системы в Shell. Обратите внимание, что в списке должен быть файл, созданный ранее, – testFile.txt.
Переименование файла
Чтобы переименовать файл, можно использовать метод rename() из модуля os. Передайте в качестве аргументов текущее имя файла и новое имя файла. Например:
os.rename('old_file_name.txt', 'new_file_name.txt')
Чтобы изменить имя нашего предыдущего файла, можно запустить следующий пример (он уже проверяет содержимое файловой системы с помощью os.listdir()).
import os
os.rename('testFile.txt','newNameFile.txt')
print(os.listdir())
Запустите эти строки на вашем Raspberry Pi Pico. Обратите внимание, что имя файла было изменено на newNameFile.txt.
Запись в файл
Запись в файл очень проста. Достаточно использовать метод write() для объекта файла и передать в качестве аргумента данные, которые вы хотите записать (это должна быть строка).
Сначала нужно открыть файл в режиме записи.
file = open('newNameFile.txt', 'w')
Например, чтобы записать некоторые данные в файл:
file.write("Writing my first line")
После записи в файл следует вызвать метод close() для закрытия файла и сохранения его содержимого.
file.close()
Метод write() перезапишет все предыдущие данные в файле.
Дополнение файла
Если вы хотите добавить новые данные в конец существующего файла, необходимо записывать в файл в режиме дополнения 'a'.
Откройте файл в режиме дополнения:
file = open('newNameFile.txt', 'a')
Запишите в файл с помощью метода write():
file.write('This line was appended')
После записи в файл следует вызвать метод close() для закрытия файла и сохранения его содержимого.
file.close()
Чтение файла
Для чтения файла сначала нужно открыть его в режиме чтения 'r'. Например:
file = open('newNameFile.txt', 'r')
Затем мы можем прочитать его содержимое с помощью метода read() для объекта файла. Например:
file.read()
Мы можем сохранить содержимое файла в переменную, а затем вывести его в Shell:
content = file.read()
print("File content:")
print(content)
Не забывайте всегда закрывать файл после выполнения файловых операций:
file.close()
Следующий код выполняет все файловые операции, которые мы рассмотрели ранее:
import os
# Создать новый файл с именем testFile.txt
file = open('testFile.txt', 'w')
# Вывести список всех файлов в файловой системе
print(os.listdir())
# Записать содержимое в файл
file.write("Writing my first line \n")
file.close()
# Переименовать файл
os.rename('testFile.txt','newNameFile.txt')
# Вывести список всех файлов в файловой системе
print(os.listdir())
# Открыть файл в режиме дополнения
file = open('newNameFile.txt', 'a')
# Дополнить файл данными
file.write('This line was appended')
file.close()
# Открыть файл в режиме чтения
file = open('newNameFile.txt', 'r')
# Прочитать содержимое файла
content = file.read()
# Вывести содержимое файла
print("File content:")
print(content)
file.close()
Если вы запустите этот код на вашем Raspberry Pi Pico, вы должны получить результат, аналогичный показанному на скриншоте ниже.
Символ новой строки
В предыдущем коде обратите внимание, что мы используем \n в конце этой строки:
file.write("Writing my first line \n")
В Python/MicroPython \n представляет символ новой строки. Он используется для обозначения конца строки в текстовом файле. Это управляющий символ, который указывает на начало новой строки текста.
При работе с файлами символ новой строки полезен для форматирования текста. При записи нескольких строк в файл вы используете \n для разделения каждой строки.
Удаление файла
Чтобы удалить файл, можно использовать os.remove() и передать в качестве аргумента путь к файлу. Например, чтобы удалить newNameFile.txt, можно просто выполнить следующее:
import os
os.remove('newNameFile.txt')
Чтобы проверить, был ли файл действительно удален, можно вывести список всех файлов в директории после предыдущих команд.
# Вывести список всех файлов в файловой системе
print(os.listdir())
После выполнения этих строк вы увидите, что newNameFile.txt больше нет в файловой системе.
Ключевое слово with для файловых операций
Ключевое слово with используется при работе с файлами для обеспечения правильного управления ресурсами и упрощения кода. В частности, оно часто используется с функцией open() при работе с файлами. Например:
with open('file_path', 'w') as file:
file.write('hello world!')
Этот синтаксис автоматически обрабатывает открытие и закрытие файла, гарантируя, что файл будет правильно закрыт, когда вы закончите с ним работу, даже если во время файловых операций возникнет исключение.
Предыдущий фрагмент эквивалентен следующему:
file = open('file_path', 'w')
try:
file.write('hello world!')
finally:
file.close()
Таким образом, использование ключевого слова with упрощает ваш код и обеспечивает правильное управление файлами.
Операции с директориями
Модуль os также содержит полезные методы для работы с директориями (папками). Работа с директориями очень полезна для организации файлов. Особенно если вы работаете с множеством файлов.
Создание директории
Создание новой директории так же просто, как использование метода mkdir() из модуля os. Необходимо передать в качестве аргумента путь к директории. Если вы хотите создать папку в корне файловой системы Raspberry Pi Pico, можно просто передать имя директории.
Например, следующий код создает новую директорию с именем my_directory в корне файловой системы Raspberry Pi Pico:
import os
# Указать путь к директории
dir_path = 'my_directory'
# Создать новую директорию
os.mkdir(dir_path)
Запустите этот код, чтобы создать папку в файловой системе Pico.
Вы можете проверить, что новая директория появилась в списке файлов файловой системы.
Просмотр файлов в директории
Как мы видели ранее, можно использовать метод listdir() для вывода списка всех файлов в файловой системе. Если вы хотите вывести список файлов внутри определенной папки, достаточно передать путь к папке в качестве аргумента. Например, следующий код проверит содержимое вашей новой директории my_directory:
import os
dir_path = 'my_directory'
# Вывести список файлов в директории
files = os.listdir(dir_path)
print("Files in the directory:", files)
Запустите этот код. В данном случае он вернет пустой массив, поскольку директория пуста.
Удаление директории
Модуль os содержит метод для удаления пустых папок. Можно использовать метод rmdir() и передать в качестве аргумента путь к директории. Например:
import os
directory_path = 'my_directory'
os.rmdir(directory_path)
Если вы хотите удалить директорию, сначала необходимо удалить ее файлы, прежде чем применять метод rmdir().
Заключение
В этом руководстве мы рассмотрели, как работать с файлами и папками в файловой системе Raspberry Pi Pico. Вы узнали, как создавать, записывать, читать и удалять файлы, а также создавать, удалять и просматривать директории.
Если вы хотите узнать, как сделать нечто похожее, но с использованием карты microSD, ознакомьтесь со следующим руководством: