[Diao Ye aprende a programar] Módulo incorporado manual de MicroPython statvfs

Insertar descripción de la imagen aquí

MicroPython es una versión ligera del intérprete diseñada para ejecutar el lenguaje de programación Python 3 en sistemas integrados. En comparación con Python normal, el intérprete de MicroPython es pequeño (solo alrededor de 100 KB) y se compila en un archivo ejecutable binario para su ejecución, lo que resulta en una mayor eficiencia de ejecución. Utiliza un mecanismo de recolección de basura liviano y elimina la mayor parte de la biblioteca estándar de Python para adaptarse a microcontroladores con recursos limitados.

Las características principales de MicroPython incluyen:
1. La sintaxis y las funciones son compatibles con Python estándar, lo que facilita su aprendizaje y uso. Admite la mayoría de la sintaxis principal de Python.
2. Acceda y controle directamente el hardware, controle GPIO, I2C, SPI, etc. como Arduino.
3. Potente sistema de módulos, que proporciona sistema de archivos, red, interfaz gráfica y otras funciones.
4. Admite compilación cruzada para generar código nativo eficiente, que es entre 10 y 100 veces más rápido que el intérprete.
5. La cantidad de código es pequeña y el uso de memoria es pequeño, adecuado para ejecutarse en MCU y placas de desarrollo con poca memoria.
6. Licencia de código abierto, de uso gratuito. El entorno interactivo de Shell proporciona comodidad para el desarrollo y las pruebas.
7. El controlador de E/S incorporado admite una gran cantidad de plataformas de microcontroladores, como ESP8266, ESP32, STM32, micro:bit, placa de control y PyBoard, etc. Hay una comunidad activa.

Los escenarios de aplicación de MicroPython incluyen:
1. Crear rápidamente prototipos e interacciones de usuario para productos integrados.
2. Realice algunos pequeños proyectos de hardware programables.
3. Como herramienta educativa, ayuda a los principiantes a aprender programación en Python e IoT.
4. Cree firmware para dispositivos inteligentes para lograr control avanzado y conectividad en la nube.
5. Diversas aplicaciones de microcontroladores como Internet de las cosas, inteligencia integrada, robots, etc.

Cosas a tener en cuenta al utilizar MicroPython:
1. La memoria y el espacio Flash son limitados.
2. La eficiencia de explicación y ejecución no es tan buena como la del lenguaje C.
3. Algunas funciones de la biblioteca son diferentes a las de la versión estándar.
4. Optimice la sintaxis de la plataforma y corrija las diferencias con el Python estándar.
5. Uso razonable de los recursos de memoria para evitar la asignación frecuente de grandes bloques de memoria.
6. Utilice código nativo para mejorar el rendimiento de partes clave de la velocidad.
7. Utilice adecuadamente la abstracción para encapsular las operaciones de hardware subyacentes.

En términos generales, MicroPython lleva Python al campo de los microcontroladores, lo cual es una innovación importante que no solo reduce el umbral de programación sino que también proporciona buenas capacidades de control de hardware. Es muy adecuado para el desarrollo de diversos Internet de las cosas y hardware inteligente.

Insertar descripción de la imagen aquí
El módulo integrado statvfs de MicroPython proporciona una función para obtener información sobre el estado del sistema de archivos. Sus principales características, escenarios de aplicación y asuntos que requieren atención son los siguientes:

Características principales: statvfs.statvfs (ruta) acepta una ruta de parámetro de cadena, que indica la ruta del sistema de archivos para obtener información de estado. statvfs.statvfs(ruta) genera una excepción si la ruta no existe o si la ruta no es un sistema de archivos válido. statvfs.statvfs(ruta) devuelve una tupla que contiene información del sistema de archivos, como el tamaño del bloque, la cantidad de bloques libres, la longitud máxima del nombre del archivo, etc.

Escenario de aplicación: statvfs.statvfs (ruta) se puede utilizar para obtener y procesar la información de estado del sistema de archivos en el sistema de archivos. Por ejemplo, puede utilizar statvfs.statvfs(ruta) para obtener el tamaño total y el espacio libre del sistema de archivos, o para obtener el tipo y la bandera del sistema de archivos, etc.

Cosas a tener en cuenta: antes de usar statvfs.statvfs(ruta), debe asegurarse de que la ruta sea una ruta legal y que la ruta sea un sistema de archivos existente. De lo contrario, statvfs.statvfs(path) fallará y generará una excepción. Además, statvfs.statvfs(path) puede tener diferentes implementaciones y soporte en diferentes plataformas. Por lo tanto, cuando se utiliza statvfs.statvfs(ruta), es mejor verificar primero las características y limitaciones de la plataforma.

Los siguientes son algunos casos de aplicaciones prácticas del módulo integrado statvfs.statvfs(path) de MicroPython:

Caso 1: Obtenga la información de estado del sistema de archivos del directorio raíz (/) en la placa MicroPython e imprímala. El código se muestra a continuación:

import statvfs

# 定义要获取状态信息的文件系统路径
path = '/'

# 获取文件系统状态信息
st = statvfs.statvfs(path)

# 打印文件系统状态信息
print('The status of', path, 'is:')
print('Block size:', st[0], 'bytes')
print('Fragment size:', st[1], 'bytes')
print('Total blocks:', st[2])
print('Free blocks:', st[3])
print('Available blocks:', st[4])
print('Total inodes:', st[5])
print('Free inodes:', st[6])
print('Available inodes:', st[7])
print('Flags:', st[8])
print('Maximum file name length:', st[9])

Caso 2: Obtenga el tamaño total del sistema de archivos y el espacio disponible de la tarjeta SD (/sd) en la placa MicroPython y calcule la tasa de uso. El código se muestra a continuación:

import statvfs

# 定义要获取状态信息的文件系统路径
path = '/sd'

# 获取文件系统状态信息
st = statvfs.statvfs(path)

# 获取块大小(字节)
block_size = st[0]

# 获取总块数
total_blocks = st[2]

# 获取可用块数
available_blocks = st[4]

# 计算总大小(字节)
total_size = block_size * total_blocks

# 计算可用空间(字节)
available_space = block_size * available_blocks

# 计算使用率(百分比)
usage_rate = (total_size - available_space) / total_size * 100

# 打印文件系统总大小和可用空间
print('The total size of', path, 'is', total_size, 'bytes')
print('The available space of', path, 'is', available_space, 'bytes')

# 打印文件系统使用率
print('The usage rate of', path, 'is', usage_rate, '%')

Caso 3: Determine si el sistema de archivos del directorio raíz (/) admite nombres de archivos largos (longitud superior a 8) en la placa MicroPython. El código se muestra a continuación:

import statvfs

# 定义要获取状态信息的文件系统路径
path = '/'

# 获取文件系统状态信息
st = statvfs.statvfs(path)

# 获取最大文件名长度
max_name_length = st[9]

# 判断是否支持长文件名
if max_name_length > 8:
    print(path, 'supports long file names')
else:
    print(path, 'does not support long file names')

Caso 4: Obtener información del sistema de archivos:

import uos
import statvfs

# 获取文件系统信息
fs_stat = uos.statvfs("/")

# 打印文件系统信息
print("总空间:", fs_stat[statvfs.F_BLOCKS] * fs_stat[statvfs.F_BSIZE], "字节")
print("可用空间:", fs_stat[statvfs.F_BAVAIL] * fs_stat[statvfs.F_BSIZE], "字节")
print("使用空间:", (fs_stat[statvfs.F_BLOCKS] - fs_stat[statvfs.F_BFREE]) * fs_stat[statvfs.F_BSIZE], "字节")

En este ejemplo, utilizamos la función statvfs del módulo uos para obtener información del sistema de archivos raíz. Accediendo a las propiedades del objeto statvfs, podemos obtener el espacio total, el espacio libre y el espacio utilizado del sistema de archivos. Usamos fs_stat[statvfs.F_BLOCKS] * fs_stat[statvfs.F_BSIZE] para calcular el espacio total, fs_stat[statvfs.F_BAVAIL] * fs_stat[statvfs.F_BSIZE] para calcular el espacio disponible, usamos (fs_stat[statvfs.F_BLOCKS] - fs_stat [ statvfs.F_BFREE]) * fs_stat[statvfs.F_BSIZE] para calcular el espacio utilizado e imprimir la información del sistema de archivos.

Caso 5: Verifique la longitud máxima del nombre de archivo admitida por el sistema de archivos:

import uos
import statvfs

# 获取文件系统信息
fs_stat = uos.statvfs("/")

# 获取文件系统支持的最大文件名长度
max_filename_length = fs_stat[statvfs.F_NAMEMAX]

# 打印最大文件名长度
print("文件系统支持的最大文件名长度:", max_filename_length)

En este ejemplo, utilizamos la función statvfs del módulo uos para obtener información del sistema de archivos raíz. Al acceder a las propiedades del objeto statvfs, podemos obtener la longitud máxima del nombre de archivo admitida por el sistema de archivos. Usamos fs_stat[statvfs.F_NAMEMAX] para obtener la longitud máxima del nombre de archivo e imprimir el valor.

Caso 6: Obtenga el tamaño de bloque del sistema de archivos:

import uos
import statvfs

# 获取文件系统信息
fs_stat = uos.statvfs("/")

# 获取文件系统的块大小
block_size = fs_stat[statvfs.F_BSIZE]

# 打印块大小
print("文件系统的块大小:", block_size, "字节")

En este ejemplo, utilizamos la función statvfs del módulo uos para obtener información del sistema de archivos raíz. Al acceder a las propiedades del objeto statvfs, podemos obtener el tamaño de bloque del sistema de archivos. Usamos fs_stat[statvfs.F_BSIZE] para obtener el tamaño del bloque e imprimir el valor.

Caso 7: Obtener información sobre la capacidad del sistema de archivos

import uos

# 获取文件系统的容量信息
fs_stat = uos.statvfs("/")
total_space = fs_stat[0] * fs_stat[2]  # 总空间 = 每个块的大小 * 总块数
free_space = fs_stat[0] * fs_stat[3]   # 可用空间 = 每个块的大小 * 可用块数

print("总空间:", total_space, "字节")
print("可用空间:", free_space, "字节")

Este ejemplo utiliza la función uos.statvfs() para obtener la información de capacidad del sistema de archivos raíz y calcula el espacio total y el espacio disponible a partir de la tupla devuelta.

Caso 8: Obtener el tamaño del bloque del sistema de archivos

import uos

# 获取文件系统块的大小
fs_stat = uos.statvfs("/")
block_size = fs_stat[0]

print("块大小:", block_size, "字节")

En este ejemplo, utilizamos la función uos.statvfs() para obtener la información de capacidad del sistema de archivos raíz y extraer el tamaño del bloque de la tupla devuelta.

Caso 9: Calcular el uso del sistema de archivos

import uos

# 获取文件系统容量信息
fs_stat = uos.statvfs("/")
total_blocks = fs_stat[2]
free_blocks = fs_stat[3]

# 计算文件系统使用率
usage_percent = (total_blocks - free_blocks) / total_blocks * 100

print("文件系统使用率:", usage_percent, "%")

En este ejemplo, utilizamos la función uos.statvfs() para obtener la información de capacidad del sistema de archivos del directorio raíz y calcular el uso del sistema de archivos. El uso se calcula como la proporción de bloques usados ​​con respecto al total de bloques y se multiplica por 100 para expresarlo como porcentaje.

Estos casos muestran la aplicación práctica de la función uos.statvfs(), incluida la obtención de información sobre la capacidad del sistema de archivos, la obtención del tamaño de bloque del sistema de archivos y el cálculo del uso del sistema de archivos. Al utilizar la función statvfs, puede obtener fácilmente información relacionada con el sistema de archivos en el dispositivo MicroPython y realizar el procesamiento y los cálculos correspondientes. Tenga en cuenta que cuando utilice la función statvfs, asegúrese de tener permisos suficientes y configuraciones de ruta razonables, y realice los ajustes y el procesamiento adecuados de acuerdo con las necesidades reales.

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_41659040/article/details/132787286
Recomendado
Clasificación