[Diao Ye aprende a programar] Listdir 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 operativo integrado de MicroPython proporciona algunos servicios básicos del sistema operativo, incluido el acceso y la administración del sistema de archivos. Entre ellos, os.listdir(dir) es una función que se utiliza para enumerar archivos y carpetas en un directorio. Sus principales características, escenarios de aplicación y asuntos que requieren atención son los siguientes:

caracteristica principal:

os.listdir(dir) acepta un parámetro de cadena dir, que indica la ruta del directorio que se enumerará. Si no se especifica dir, el directorio actual aparece de forma predeterminada. os.listdir(dir) devuelve una lista que contiene los nombres de todos los archivos y carpetas en el directorio. Si dir no existe, o dir no es un directorio, os.listdir(dir) generará una excepción.

Escenario de aplicación:

os.listdir(dir) se puede utilizar para ver y recorrer el contenido de un directorio en el sistema de archivos. Por ejemplo, puede usar os.listdir(dir) para verificar qué archivos y carpetas están en un directorio determinado y luego realizar las operaciones según sea necesario. También puede usar os.listdir(dir) para recorrer todos los archivos y carpetas en un directorio determinado y luego procesar cada elemento.

Cosas a tener en cuenta:

Antes de usar os.listdir(dir), debe asegurarse de que dir sea una ruta legal y que dir sea un directorio existente. De lo contrario, os.listdir(dir) fallará y generará una excepción. Además, si dir es una ruta relativa, es relativa al directorio de trabajo actual. Por lo tanto, antes de usar os.listdir(dir), es mejor usar os.getcwd() para obtener el directorio de trabajo actual y ajustar el valor de dir según sea necesario.

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

Caso 1: Verifique qué unidades están en el directorio raíz (como /flash, /sd, etc.) en la placa MicroPython. El código se muestra a continuación:

import os

# 列出根目录下的所有驱动器
drives = os.listdir('/')

# 打印驱动器列表
print(drives)

Caso 2: elimine todos los archivos vacíos (tamaño 0 bytes) en un directorio determinado en la placa MicroPython. El código se muestra a continuación:

import os

# 定义要删除空文件的目录
path = 'test'

# 列出该目录下的所有文件和文件夹
items = os.listdir(path)

# 遍历每个项目
for item in items:
    # 获取项目的完整路径
    full_path = os.path.join(path, item)
    # 如果项目是一个文件
    if os.path.isfile(full_path):
        # 获取文件的大小
        size = os.stat(full_path)[6]
        # 如果文件大小为0
        if size == 0:
            # 删除文件
            os.remove(full_path)
            # 打印删除信息
            print('Removed', full_path)

Caso 3: Cuente el número y el tamaño total de todos los archivos de imagen (que terminan en .jpg o .png) en un directorio determinado en el tablero MicroPython. El código se muestra a continuación:

import os

# 定义要统计图像文件的目录
path = 'images'

# 列出该目录下的所有文件和文件夹
items = os.listdir(path)

# 初始化图像文件数量和总大小为0
count = 0
total_size = 0

# 遍历每个项目
for item in items:
    # 获取项目的完整路径
    full_path = os.path.join(path, item)
    # 如果项目是一个图像文件(以.jpg或.png结尾)
    if full_path.endswith('.jpg') or full_path.endswith('.png'):
        # 增加图像文件数量
        count += 1
        # 获取文件大小,并累加到总大小中
        size = os.stat(full_path)[6]
        total_size += size

# 打印图像文件数量和总大小
print('There are', count, 'image files in', path)
print('The total size is', total_size, 'bytes')

Caso 4: Mostrar todos los archivos en la carpeta:

import os

# 定义目标文件夹
folder = "/home/pi/projects"

# 获取文件列表
files = os.listdir(folder)

# 打印所有文件
print("文件列表:")
for file in files:
    print(file)

En este ejemplo, utilizamos la función listdir del módulo os para obtener la lista de archivos en la carpeta especificada. Luego recorremos la lista de archivos e imprimimos cada archivo.

Caso 5: Cuente la cantidad de archivos en una carpeta:

import os

# 定义目标文件夹
folder = "/home/pi/documents"

# 获取文件列表
files = os.listdir(folder)

# 统计文件数量
file_count = len(files)

# 打印文件数量
print("文件夹中的文件数量:", file_count)

En este ejemplo, utilizamos la función listdir del módulo os para obtener la lista de archivos en la carpeta especificada. Luego, usamos la función len para calcular la longitud de la lista de archivos, que es la cantidad de archivos. Finalmente, imprima la cantidad de archivos en la carpeta.

Caso 6: Eliminar archivos especificados en la carpeta:

import os

# 定义目标文件夹
folder = "/home/pi/photos"

# 获取文件列表
files = os.listdir(folder)

# 定义要删除的文件名
file_to_delete = "image.jpg"

# 检查文件是否存在并删除
if file_to_delete in files:
    file_path = os.path.join(folder, file_to_delete)
    os.remove(file_path)
    print("已删除文件:", file_to_delete)
else:
    print("文件不存在:", file_to_delete)

En este ejemplo, utilizamos la función listdir del módulo os para obtener la lista de archivos en la carpeta especificada. Luego verificamos si el archivo que se va a eliminar existe en la lista de archivos. Si existe, utilizamos la función de eliminación del módulo del sistema operativo para eliminar el archivo e imprimir el nombre del archivo eliminado. Si el archivo no existe, se imprime un mensaje indicando que el archivo no existe.

Caso 7: Listar archivos y subdirectorios en un directorio

import uos

# 列出当前目录中的所有文件和子目录
items = uos.listdir()

# 遍历目录中的条目
for item in items:
    print(item)

Este ejemplo utiliza la función uos.listdir() para enumerar todos los archivos y subdirectorios en el directorio actual y almacena los resultados en la variable items. Luego usamos un bucle para iterar sobre los elementos e imprimir el nombre de cada elemento.

Caso 8: Filtrar tipos específicos de archivos

import uos

# 列出当前目录中的所有 Python 脚本文件
items = uos.listdir()
for item in items:
    if item.endswith('.py'):
        print(item)

En este ejemplo, usamos la función uos.listdir() para enumerar todos los archivos y subdirectorios en el directorio actual y usamos un bucle para iterar sobre cada entrada. Filtramos los archivos de script de Python comprobando si el nombre de cada entrada termina en ".py" y lo imprimimos.

Caso 9: escanear archivos específicos en un directorio

import uos

# 列出当前目录中所有的图片文件
items = uos.listdir()
for item in items:
    if item.endswith(('.jpg', '.png', '.gif')):
        print(item)

En este ejemplo, usamos la función uos.listdir() para enumerar todos los archivos y subdirectorios en el directorio actual y usamos un bucle para iterar sobre cada entrada. Filtramos archivos de imágenes comprobando si el nombre de cada entrada termina en ".jpg", ".png" o ".gif" y los imprimimos.

Estos casos demuestran la función uos.listdir() en acción, incluida la lista de archivos y subdirectorios en un directorio, el filtrado de archivos de tipos específicos y el escaneo de un directorio en busca de archivos específicos. Al utilizar la función listdir, puede manejar archivos y directorios de manera flexible en un dispositivo MicroPython y realizar operaciones y procesamiento adicionales según sea necesario.

hay que tener en cuenta es:

Cuando utilice la función listdir, asegúrese de que la ruta del directorio especificada sea correcta y tenga los permisos adecuados.
El sistema de archivos de MicroPython puede tener algunas limitaciones, como limitaciones de longitud de nombres de archivos, limitaciones de profundidad de rutas, etc. Asegúrese de que su aplicación funcione correctamente dentro de estas restricciones.
Para directorios grandes o anidados, los resultados devueltos por la función listdir pueden consumir más memoria. Cuando trabaje con directorios grandes, considere usar un iterador para obtener las entradas una por una para reducir el uso de memoria.
Cuando trabaje con archivos y directorios, recuerde siempre implementar el manejo de errores y excepciones para garantizar la solidez y estabilidad de su código.

Insertar descripción de la imagen aquí

Supongo que te gusta

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