[Diao Ye aprende a programar] Estadísticas del módulo incorporado manual de MicroPython

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 de estadísticas integrado de MicroPython proporciona algunas constantes y funciones para manejar el estado del archivo. Sus principales características, escenarios de aplicación y asuntos que requieren atención son los siguientes:

Características principales: El módulo de estadísticas define algunas constantes, como stat.S_IFDIR, stat.S_IFREG, etc., para indicar el tipo de archivo. El módulo stat también define algunas funciones, como stat.stat(path), stat.fstat(fd), etc., para obtener información sobre el estado del archivo. La información de estado de un archivo es una tupla, incluido el tamaño del archivo, el tiempo de modificación, los permisos y otros atributos. El módulo de estadísticas también proporciona algunas funciones auxiliares, como stat.S_ISDIR(modo), stat.S_ISREG(modo), etc., para determinar el tipo de archivo.

Escenario de aplicación: el módulo de estadísticas se puede utilizar para obtener y procesar información de estado de archivos en el sistema de archivos. Por ejemplo, puede utilizar el módulo stat para determinar si una ruta es un directorio o un archivo, u obtener el tamaño o la hora de modificación de un archivo, etc.

Cosas a tener en cuenta: antes de usar el módulo de estadísticas, debe importar el módulo y usar la declaración de importación de estadísticas. Antes de utilizar las funciones del módulo de estadísticas, debe asegurarse de que el archivo o la ruta exista. De lo contrario, se lanzará una excepción. Además, el módulo de estadísticas puede tener diferentes implementaciones y soporte en diferentes plataformas. Por lo tanto, al utilizar el módulo de estadísticas, es mejor verificar primero las características y limitaciones de la plataforma1.

Los siguientes son varios ejemplos de aplicaciones prácticas del módulo de estadísticas integrado de MicroPython:

Caso 1: Obtenga el tamaño y la hora de modificación de un archivo llamado 'test.txt' en la placa MicroPython. El código se muestra a continuación:

import os
import stat
import time

# 定义要获取状态信息的文件路径
path = 'test.txt'

# 获取文件的状态信息
st = os.stat(path)

# 获取文件的大小(字节)
size = st[6]

# 获取文件的修改时间(秒)
mtime = st[8]

# 格式化修改时间为字符串
mtime_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(mtime))

# 打印文件的大小和修改时间
print('The size of', path, 'is', size, 'bytes')
print('The last modified time of', path, 'is', mtime_str)

Caso 2: Determine si una ruta llamada 'temp' es un directorio o un archivo en la placa MicroPython. El código se muestra a continuación:

import os
import stat

# 定义要判断类型的路径
path = 'temp'

# 获取路径的状态信息
st = os.stat(path)

# 获取路径的类型(mode)
mode = st[0]

# 判断路径是否是一个目录
if stat.S_ISDIR(mode):
    print(path, 'is a directory')
# 判断路径是否是一个文件
elif stat.S_ISREG(mode):
    print(path, 'is a file')
# 其他情况
else:
    print(path, 'is neither a directory nor a file')

Caso 3: Modifique los permisos de un archivo llamado 'imagen.jpg' en el tablero MicroPython para que solo pueda ser leído y escrito por el propietario. El código se muestra a continuación:

import os
import stat

# 定义要修改权限的文件路径
path = 'image.jpg'

# 获取文件的状态信息
st = os.stat(path)

# 获取文件的当前权限(mode)
mode = st[0]

# 计算新的权限(只保留所有者读写位)
new_mode = mode & (stat.S_IRUSR | stat.S_IWUSR)

# 修改文件的权限
os.chmod(path, new_mode)

# 打印修改后的权限
print('The new mode of', path, 'is', oct(new_mode))

Caso 4: Obtener información del archivo:

import os
import stat

# 定义文件路径
file_path = "/home/pi/documents/file.txt"

# 获取文件信息
file_stat = os.stat(file_path)

# 打印文件信息
print("文件大小:", file_stat.st_size, "字节")
print("最后修改时间:", file_stat.st_mtime)
print("最后访问时间:", file_stat.st_atime)
print("文件权限:", stat.filemode(file_stat.st_mode))

En este ejemplo, utilizamos la función stat del módulo os para obtener información sobre el archivo especificado. Definimos la ruta del archivo y luego usamos la función os.stat para obtener el objeto de estadísticas del archivo. Al acceder a las propiedades del objeto de estadísticas, podemos obtener el tamaño del archivo (en bytes), la hora de la última modificación, la hora del último acceso y los permisos del archivo. Usamos la función stat.filemode para convertir los valores de permiso en un formato legible e imprimir la información del archivo.

Caso 5: compruebe si el archivo es un directorio:

import os

# 定义路径
path = "/home/pi/documents"

# 检查路径是否为目录
if os.path.isdir(path):
    print("该路径是一个目录")
else:
    print("该路径不是一个目录")

En este ejemplo, usamos la función isdir del módulo os para verificar si la ruta especificada es un directorio. Definimos la ruta y luego la verificamos usando la función os.path.isdir. Si la ruta es un directorio, imprimimos el mensaje "La ruta es un directorio". Si la ruta no es un directorio imprimimos el mensaje "La ruta no es un directorio".

Caso 6: compruebe si el archivo es un archivo normal:

import os

# 定义路径
path = "/home/pi/documents/file.txt"

# 检查路径是否为普通文件
if os.path.isfile(path):
    print("该路径是一个普通文件")
else:
    print("该路径不是一个普通文件")

En este ejemplo, utilizamos la función isfile del módulo os para comprobar si la ruta especificada es un archivo normal. Definimos la ruta y luego verificamos la ruta usando la función os.path.isfile. Si la ruta es un archivo normal imprimimos el mensaje "La ruta es un archivo normal". Si la ruta no es un archivo normal, imprimimos el mensaje "La ruta no es un archivo normal".

Caso 7: Obtener el tamaño, hora de creación y hora de modificación del archivo

import uos

# 获取文件 "data.txt" 的状态信息
file_stat = uos.stat("data.txt")

# 提取文件大小
file_size = file_stat[6]
print("文件大小:", file_size, "字节")

# 提取文件的创建时间和修改时间
create_time = file_stat[8]
modify_time = file_stat[9]
print("创建时间:", create_time)
print("修改时间:", modify_time)

Este ejemplo utiliza la función uos.stat() para obtener información de estado del archivo "data.txt" y extrae el tamaño del archivo, la hora de creación y la hora de modificación de la tupla devuelta.

Caso 8: comprobar si el archivo es un directorio

import uos

# 检查文件 "data" 是否为目录
file_stat = uos.stat("data")
is_directory = file_stat[0] & 0x4000  # 目录的标志位为 0x4000

if is_directory:
    print("文件是一个目录")
else:
    print("文件不是一个目录")

En este ejemplo, usamos la función uos.stat() para obtener la información de estado del archivo "datos" y verificamos los indicadores devueltos para determinar si el archivo es un directorio.

Caso 9: Obtención de permisos de acceso a archivos

import uos

# 获取文件 "script.py" 的访问权限
file_stat = uos.stat("script.py")
access_permissions = file_stat[0] & 0o777  # 通过掩码提取访问权限

print("访问权限:", oct(access_permissions))

En este ejemplo, utilizamos la función uos.stat() para obtener la información de estado del archivo "script.py" y extraer los permisos de acceso del archivo mediante enmascaramiento. Los derechos de acceso devueltos son un valor octal, que se puede convertir a una representación octal usando la función oct().

Estos casos muestran la aplicación práctica de la función uos.stat(), incluida la obtención del tamaño, la hora de creación y la hora de modificación de un archivo, comprobar si el archivo es un directorio y obtener el permiso de acceso al archivo. Al utilizar la función estadística, puede obtener fácilmente la información de estado del archivo en el dispositivo MicroPython y realizar más procesamiento y evaluación según sea necesario. Tenga en cuenta que cuando utilice la función de estadísticas, 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/132787281
Recomendado
Clasificación