![Лесно управление на файлове в MicroPython с библиотеката writeToFile.py](http://ardudevelop.eu/wp-content/uploads/2024/12/Лесно-управление-на-файлове-в-MicroPython-с-библиотеката-writeToFile.py_.png)
Въведение
Работата с файлове в MicroPython може да бъде предизвикателна, особено при управлението на множество задачи като създаване, запис, четене или изтриване на файлове. Библиотеката writeToFile.py
е създадена, за да улесни тези задачи и да предостави прост и интуитивен начин за работа с файлове на микроконтролери като ESP8266, ESP32 и Raspberry Pi Pico.
Тази библиотека включва лесни за използване функции, които покриват основните нужди на файловата система, както и допълнителни инструменти като проверка на свободната памет и четене на конкретен ред от файл.
Ако все още не сте инсталирали MicroPython на вашия процесор, може да разберете как става това в статиите ни:
- Как да инсталирате MicroPython на ESP8266
- Инсталиране на MicroPython върху ESP32
- Как да инсталирате MicroPython на Raspberry Pi Pico: Ръководство стъпка по стъпка
Код на библиотеката
import os
class writeToFile:
def __init__(self):
pass
# Създаване на файл (ако не съществува)
def create_file(self, filename):
try:
with open(filename, 'w') as file:
pass
# print(f"Файлът '{filename}' беше създаден успешно.")
except Exception as e:
print(f"Грешка при създаване на файл: {e}")
# Запис на стринг на нов ред в съществуващ файл
def write_to_file(self, filename, string):
try:
with open(filename, 'a') as file:
file.write(string + '\n')
# print(f"Записан е нов ред в '{filename}': {string}")
except Exception as e:
print(f"Грешка при запис във файл: {e}")
# Четене на съдържание от файл
def read_file(self, filename):
try:
with open(filename, 'r') as file:
contents = file.read()
# print(f"Съдържание на '{filename}':")
print(contents)
return contents
except Exception as e:
print(f"Грешка при четене на файл: {e}")
return None
# Изтриване на файл
def delete_file(self, filename):
try:
os.remove(filename)
print(f"Файлът '{filename}' беше изтрит успешно.")
except Exception as e:
print(f"Грешка при изтриване на файл: {e}")
# Принтиране на всички файлове без разширение '.py'
def list_files(self):
try:
files = os.listdir('/')
# print("Налични файлове (без '.py' файловете):")
filtered_files = [file for file in files if not file.endswith('.py')]
for file in filtered_files:
print(file)
return filtered_files
except Exception as e:
print(f"Грешка при изброяване на файловете: {e}")
return []
# Проверка на свободната памет
def get_free_space(self):
try:
stats = os.statvfs('/')
free_space = stats[0] * stats[4] # Размер на един блок * Брой свободни блокове
free_space_mb = free_space / (1024 * 1024) # Преобразуване в мегабайти
# print(f"Свободно пространство: {free_space} байта")
return round(free_space_mb, 3)
except Exception as e:
print(f"Грешка при проверка на свободната памет: {e}")
return None
# Четене на определен ред от файл
def read_specific_line(self, filename, line_number):
try:
with open(filename, 'r') as file:
lines = file.readlines()
if 0 < line_number <= len(lines):
return lines[line_number - 1].strip()
else:
# print(f"Грешка: Невалиден номер на ред. Файлът '{filename}' има само {len(lines)} реда.")
return None
except Exception as e:
print(f"Грешка при четене на файл: {e}")
return None
Обяснение на библиотеката writeToFile.py
1. create_file(filename)
- Създава празен файл с подаденото име, ако такъв не съществува.
- Ако файлът вече съществува, функцията го оставя непроменен.
2. write_to_file(filename, string)
- Добавя подадения стринг на нов ред в края на файла.
- Ако файлът не съществува, функцията връща съобщение за грешка.
3. read_file(filename)
- Чете и връща цялото съдържание на файла.
- Ако файлът не съществува, извежда съобщение за грешка.
4. delete_file(filename)
- Изтрива подадения файл.
- Полезна за управление на остарели или ненужни файлове.
5. list_files()
- Принтира списък с всички файлове в текущата директория, без да включва тези с разширение
.py
.
6. get_free_space()
- Изчислява и връща свободното пространство на устройството в мегабайти.
- Използва се за оптимизация на съхранението.
7. read_specific_line(filename, line_number)
- Връща съдържанието на определен ред от файла.
- Ако номерът на реда е невалиден (по-голям от броя на редовете), функцията връща
None
.
Примерен код за използване на библиотеката на writeToFile.py
from writeToFile import writeToFile
# Инициализация на writeToFile обекта
wr= writeToFile()
# 1. Създаване на нов файл
wr.create_file('my_data.txt')
# 2. Запис на стрингове в този файл
wr.write_to_file('my_data.txt', 'Първи ред текст')
wr.write_to_file('my_data.txt', 'Втори ред текст')
wr.write_to_file('my_data.txt', 'Трети ред текст')
# 3. Четене на съдържанието на файла
wr.read_file('my_data.txt')
# 4. Четене на определен(даден) ред
print(wr.read_specific_line('my_data.txt', 2))
# 5. Принтиране на всички файлове, които не са с разширение '.py'
wr.list_files()
# 6. Изтриване на файл
wr.delete_file('my_data.txt')
# 7. Принтиране на свободната памет
print(wr.get_free_space())
Обяснение на примерния код
Импортиране на библиотеката:
from writeToFile import writeToFile
Инициализация на writeToFile обекта:
wr= writeToFile()
Създаване на файл: Създаваме файла my_data.txt.
wr.create_file('my_data.txt')
Добавяне на текст: Тук добавяме три реда във създадения файл “my_data.txt“, като всеки запис е на нов ред:
wr.write_to_file('my_data.txt', 'Първи ред текст')
wr.write_to_file('my_data.txt', 'Втори ред текст')
wr.write_to_file('my_data.txt', 'Трети ред текст')
Изчитане на цялото съдържание от файла “my_data.txt“:
wr.read_file('my_data.txt')
Изчитане на определен ред: В този случай изчитаме вторият ред от файла.
print(wr.read_specific_line('my_data.txt', 2))
Изброяване на файлове: Принтира всички файлове и папки които са без разширение".py
“.
wr.list_files()
Изтриване на определен файл: Тук можем да изтрием създадения от нас файл (или някой друг).
wr.delete_file('my_data.txt')
Свободна памет: Показва свободната памет в мегабайти.
print(wr.get_free_space())
Заключение
Библиотеката writeToFile.py
е мощен инструмент за управление на файловата система в MicroPython. Тя е създадена с цел да опрости работата с файлове в MicroPython и предоставя лесен интерфейс за основни операции като създаване, четене, запис и изтриване на файлове. Допълнителните функции, като проверка на свободната памет и извличане на конкретен ред, правят библиотеката още по-полезна за приложенията на микроконтролери.
Подходяща за ESP8266, ESP32 и Raspberry Pi Pico, writeToFile.py
е отличен избор за проекти, изискващи работа с файлове.
Офицялна документация за MicroPython: MicroPython documentation.