【雕爷学编程】MicroPython手册之内置模块 os:与操作系统交互的函数

在这里插入图片描述

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是一个用于提供基本的“操作系统”服务的模块,它可以用来访问和操作文件系统,终端,内存,重置和唤醒等功能。它的主要特点是:

1、它可以使用chdir(), getcwd(), ilistdir(), listdir(), mkdir(), remove(), rmdir(), rename(), stat(), statvfs()等方法来进行文件系统的访问和操作。
2、它可以使用dupterm()方法来在类似流的对象上复制或切换MicroPython终端(REPL)。
3、它可以使用mount()和umount()方法来在虚拟文件系统中挂载或卸载不同类型的文件系统,如FAT, littlefs等。
4、它可以使用reset(), soft_reset(), bootloader(), reset_cause(), wake_reason()等方法来重置或唤醒设备,或获取重置或唤醒的原因。
5、它可以使用uname()和urandom()方法来获取有关底层机器和操作系统的信息,或生成随机字节。
6、它可以使用disable_irq(), enable_irq()等方法来禁用或启用中断请求。
7、它可以使用freq(), idle(), sleep(), lightsleep(), deepsleep()等方法来调节或查询CPU的频率,或使设备进入低功耗模式。
8、它可以使用mem8, mem16, mem32等对象来读写内存中的字节。

os模块的应用场景有:

1、用于管理和优化设备的资源和性能,例如内存,电源,中断等。
2、用于实现一些特定的功能或效果,例如闪烁灯光,播放音乐,显示图形,读写SD卡等。
3、用于学习或教授一些硬件相关的知识或技能,例如数字电路,模拟电路,信号处理,嵌入式系统等。

os模块的注意事项有:

1、os模块实现了相应CPython模块的一个子集1,并在少数情况下提供了一些特定于MicroPython的扩展234,因此不能完全兼容CPython的功能和性能。
2、os模块依赖于特定板子上的硬件特性和资源1234,不同的MicroPython板子可能有不同的可用功能和参数范围1234,需要查看具体的文档来确定支持的功能和使用方法。
3、os模块提供了对硬件的直接和不受限制的访问和控制,使用不当可能会导致设备故障,锁定,崩溃,在极端情况下还可能导致硬件损坏。使用时需要谨慎并遵循相关的规范和指南。

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

案例一:使用os.uname()方法获取设备信息

# 导入os模块
import os

# 调用os.uname()方法,并返回一个命名元组
info = os.uname()

# 打印元组中的各个字段
print('sysname:', info.sysname) # 底层系统名称
print('nodename:', info.nodename) # 网络名称
print('release:', info.release) # 底层系统版本
print('version:', info.version) # MicroPython版本和构建日期
print('machine:', info.machine) # 底层硬件标识符

案例二:使用os.listdir()方法列出当前目录下的文件

# 导入os模块
import os

# 调用os.listdir()方法,并返回一个列表
files = os.listdir()

# 遍历列表中的每个元素
for f in files:
    # 打印文件名
    print(f)

案例三:使用os.mount()方法挂载FAT文件系统

# 导入os模块
import os

# 导入pyb模块,用于访问板载SD卡
import pyb

# 创建一个SD卡对象,连接到SPI总线
sd = pyb.SDCard()

# 调用os.mount()方法,将SD卡对象挂载到'/sd'目录下,并指定为只读模式
os.mount(sd, '/sd', readonly=True)

# 打印当前的文件系统配置信息
print(os.listdir('/'))

案例四:列出目录中的文件和文件夹:

import os

# 获取当前目录列表
file_list = os.listdir()

# 遍历并打印文件和文件夹
for item in file_list:
    print(item)

在这个示例中,我们使用os模块的listdir()函数获取当前目录中的文件和文件夹列表。然后,我们使用循环遍历列表,并打印出每个文件和文件夹的名称。

案例五:创建新的文件夹:

import os

# 创建新的文件夹
os.mkdir("new_folder")

在这个示例中,我们使用os模块的mkdir()函数创建一个名为new_folder的新文件夹。这个函数将在当前目录下创建一个新的子文件夹。

案例六:删除文件或文件夹:

import os

# 删除文件
os.remove("file.txt")

# 删除文件夹
os.rmdir("folder")

在这个示例中,我们使用os模块的remove()函数删除名为file.txt的文件。这个函数将从文件系统中删除指定的文件。然后,我们使用rmdir()函数删除名为folder的文件夹。这个函数将删除指定的文件夹及其内部的所有文件和文件夹。

案例七: 文件操作

import os

# 获取当前工作目录
current_dir = os.getcwd()
print("当前工作目录:", current_dir)

# 列出目录中的文件
files = os.listdir(current_dir)
print("目录中的文件:", files)

# 创建新目录
new_dir = "data"
os.mkdir(new_dir)
print("创建新目录:", new_dir)

# 删除目录
os.rmdir(new_dir)
print("删除目录:", new_dir)

在这个例子中,我们导入了 os 模块,并使用它执行文件操作。首先,我们使用 getcwd() 函数获取当前工作目录,并打印出来。然后,我们使用 listdir() 函数列出当前工作目录中的文件,并将结果打印出来。接下来,我们使用 mkdir() 函数创建一个新的目录,并打印出创建的目录名。最后,我们使用 rmdir() 函数删除刚创建的目录,并打印出删除的目录名。这个例子展示了如何使用 os 模块进行基本的文件操作。

案例八:系统命令执行

import os

# 执行系统命令
result = os.system("ls -l")
print("系统命令执行结果:", result)

在这个例子中,我们导入了 os 模块,并使用它执行系统命令。我们使用 system() 函数执行一个简单的系统命令 “ls -l”,该命令用于列出当前目录的详细文件信息。system() 函数将返回命令执行的结果。我们将结果打印出来。这个例子展示了如何使用 os 模块执行系统命令。

案例九:文件路径操作

import os

# 拼接文件路径
path = os.path.join("dir", "file.txt")
print("拼接后的文件路径:", path)

# 提取文件名和扩展名
filename = os.path.basename(path)
extension = os.path.splitext(filename)[1]
print("文件名:", filename)
print("扩展名:", extension)

在这个例子中,我们导入了 os 模块,并使用它执行文件路径操作。我们使用 join() 函数将目录名和文件名拼接成完整的文件路径,并将结果打印出来。接下来,我们使用 basename() 函数提取文件路径中的文件名,并使用 splitext() 函数提取文件名中的扩展名。最后,我们分别打印出文件名和扩展名。这个例子展示了如何使用 os 模块进行文件路径操作。

这些示例展示了在 MicroPython 中使用 os 模块的实际应用。os 模块提供了与操作系统交互的功能,如文件操作、系统命令执行、文件路径操作等。通过利用 os 模块,你可以在 MicroPython 中进行与操作系统相关的操作。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41659040/article/details/132775749