MicroPython手册之内置模块 rmdir

MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器。与常规Python相比,MicroPython解释器体积小(仅100KB左右),通过编译成二进制Executable文件运行,执行效率较高。它使用了轻量级的垃圾回收机制并移除了大部分Python标准库,以适应资源限制的微控制器。

MicroPython主要特点包括:
1、语法和功能与标准Python兼容,易学易用。支持Python大多数核心语法。
2、对硬件直接访问和控制,像Arduino一样控制GPIO、I2C、SPI等。
3、强大的模块系统,提供文件系统、网络、图形界面等功能。
4、支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
5、代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
6、开源许可,免费使用。Shell交互环境为开发测试提供便利。
7、内置I/O驱动支持大量微控制器平台,如ESP8266、ESP32、STM32、micro:bit、掌控板和PyBoard等。有活跃的社区。

MicroPython的应用场景包括:
1、为嵌入式产品快速构建原型和用户交互。
2、制作一些小型的可 programmable 硬件项目。
3、作为教育工具,帮助初学者学习Python和物联网编程。
4、构建智能设备固件,实现高级控制和云连接。
5、各种微控制器应用如物联网、嵌入式智能、机器人等。

使用MicroPython需要注意:
1、内存和Flash空间有限。
2、解释执行效率不如C语言。
3、部分库函数与标准版有差异。
4、针对平台优化语法,订正与标准Python的差异。
5、合理使用内存资源,避免频繁分配大内存块。
6、利用原生代码提升速度关键部位的性能。
7、适当使用抽象来封装底层硬件操作。

总体来说,MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。

MicroPython的内置模块os提供了一些基本的操作系统服务,包括文件系统的访问和管理。其中,os.rmdir(path)是一个用于删除目录的函数。它的主要特点、应用场景,以及需注意事项如下:

主要特点:os.rmdir(path)接受一个字符串参数path,表示要删除的目录的路径。如果path不存在,或者path不是一个空目录,或者path中包含无效的字符,那么os.rmdir(path)会抛出一个异常。如果path是一个空字符串,那么os.rmdir(path)不会做任何事情。

应用场景:os.rmdir(path)可以用于在文件系统中删除不需要的空目录。例如,可以用os.rmdir(path)删除一些临时创建的空目录,或者一些已经清空的数据目录,或者一些已经备份的配置目录。

需注意事项:在使用os.rmdir(path)之前,需要确保path是一个合法的路径,且path是一个存在的空目录。否则,os.rmdir(path)会失败并抛出异常1。另外,如果path是一个相对路径,那么它是相对于当前工作目录的1。因此,在使用os.rmdir(path)之前,最好先用os.getcwd()获取当前工作目录,并根据需要调整path的值。

以下是MicroPython的内置模块os.rmdir(path)的几个实际运用程序案例:

案例一:在MicroPython板子上删除一个名为’temp’的空目录。代码如下:

import os

# 定义要删除的目录路径
path = 'temp'

# 删除目录
os.rmdir(path)

案例二:在MicroPython板子上删除一个名为’data’的数据目录,前提是该目录已经清空。代码如下: 


import os

# 定义要删除的目录路径
path = 'data'

# 判断目录是否存在
if path in os.listdir():
    # 判断目录是否为空
    if len(os.listdir(path)) == 0:
        # 删除目录
        os.rmdir(path)
        # 打印删除成功信息
        print('Removed', path)
    else:
        # 打印目录非空信息
        print('Directory is not empty:', path)
else:
    # 打印目录不存在信息
    print('No such directory:', path)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

案例三:在MicroPython板子上删除某个目录下的所有空子目录。代码如下:

import os

# 定义要删除空子目录的父目录
dir = 'test'

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

# 遍历每个项目
for item in items:
    # 获取项目的完整路径
    full_path = os.path.join(dir, item)
    # 如果项目是一个空目录
    if os.path.isdir(full_path) and len(os.listdir(full_path)) == 0:
        # 删除目录
        os.rmdir(full_path)
        # 打印删除成功信息
        print('Removed', full_path)

案例四:删除空文件夹:

import os

# 定义要删除的空文件夹路径
folder_path = "/home/pi/empty_folder"

# 检查文件夹是否存在并删除
if os.path.exists(folder_path):
    os.rmdir(folder_path)
    print("已成功删除空文件夹:", folder_path)
else:
    print("文件夹不存在:", folder_path)

在这个例子中,我们使用os模块的rmdir函数删除指定路径下的空文件夹。首先,我们使用os.path.exists函数检查文件夹是否存在。如果文件夹存在,我们使用os.rmdir函数删除该文件夹,并打印出删除成功的消息。如果文件夹不存在,则打印出文件夹不存在的消息。

案例五:批量删除空文件夹:
 

import os

# 定义要删除的空文件夹列表
folders = ["/home/pi/empty_folder1", "/home/pi/empty_folder2", "/home/pi/empty_folder3"]

# 删除空文件夹
for folder in folders:
    if os.path.exists(folder):
        os.rmdir(folder)
        print("已成功删除空文件夹:", folder)
    else:
        print("文件夹不存在:", folder)

在这个例子中,我们使用os模块的rmdir函数删除指定路径下的多个空文件夹。我们定义了一个空文件夹路径列表,然后使用for循环遍历列表中的每个文件夹。在每次循环中,我们使用os.path.exists函数检查文件夹是否存在,如果存在则使用os.rmdir函数删除该文件夹,并打印出删除成功的消息。如果文件夹不存在,则打印出文件夹不存在的消息。

案例六:删除非空文件夹:
 

import shutil

# 定义要删除的非空文件夹路径
folder_path = "/home/pi/non_empty_folder"

# 删除非空文件夹及其内容
shutil.rmtree(folder_path)
print("已成功删除非空文件夹:", folder_path)

在这个例子中,我们使用shutil模块的rmtree函数删除指定路径下的非空文件夹及其内容。我们直接指定文件夹路径,然后使用shutil.rmtree函数删除该文件夹。最后,我们打印出成功删除的非空文件夹路径。

案例七:删除空目录

import uos

# 删除名为 "data" 的空目录
uos.rmdir("data")

这个例子使用 uos.rmdir() 函数删除一个名为 “data” 的空目录。rmdir 函数只能用于删除空目录,如果目录中包含文件或子目录,将引发异常。

案例八:递归删除目录及其内容

import uos

# 递归删除目录及其内容
uos.rmtree("project")

在这个例子中,我们使用 uos.rmtree() 函数递归删除名为 “project” 的目录及其内容。rmtree 函数可以删除非空目录,并且会递归删除目录下的所有文件和子目录。

案例九:批量删除特定类型的目录

import uos

# 删除根目录下所有以 "backup_" 开头的目录
dirs = uos.listdir()
for dir in dirs:
    if dir.startswith("backup_"):
        uos.rmdir(dir)

在这个例子中,我们使用 uos.listdir() 函数列出根目录下的所有文件和子目录,并使用循环迭代每个目录。我们通过检查目录的名称是否以 “backup_” 开头来筛选出特定类型的目录,并使用 uos.rmdir() 函数删除它们。

这些案例展示了 uos.rmdir() 函数的实际应用,包括删除空目录、递归删除目录及其内容以及批量删除特定类型的目录。通过使用 rmdir 函数,你可以在 MicroPython 设备上方便地进行目录的删除操作。请注意,在使用 rmdir 函数时,请确保有足够的权限和合理的路径设置,并根据实际需求进行适当的调整和处理。