Лесно управление на файлове в MicroPython с библиотеката writeToFile.py

Лесно управление на файлове в MicroPython с библиотеката writeToFile.py

Въведение

Работата с файлове в MicroPython може да бъде предизвикателна, особено при управлението на множество задачи като създаване, запис, четене или изтриване на файлове. Библиотеката writeToFile.py е създадена, за да улесни тези задачи и да предостави прост и интуитивен начин за работа с файлове на микроконтролери като ESP8266, ESP32 и Raspberry Pi Pico.
Тази библиотека включва лесни за използване функции, които покриват основните нужди на файловата система, както и допълнителни инструменти като проверка на свободната памет и четене на конкретен ред от файл.

Ако все още не сте инсталирали MicroPython на вашия процесор, може да разберете как става това в статиите ни:

Код на библиотеката

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.

Translate »