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.mkdir(path)是一个用于创建新目录的函数1。它的主要特点、应用场景,以及需注意事项如下:
主要特点:
os.mkdir(path)接受一个字符串参数path,表示要创建的目录的路径。如果path已经存在,或者path中的某个父目录不存在,或者path中包含无效的字符,那么os.mkdir(path)会抛出一个异常。如果path是一个空字符串,那么os.mkdir(path)不会做任何事情。
应用场景:
os.mkdir(path)可以用于在文件系统中创建新的目录,以便存储和组织文件。例如,可以用os.mkdir(path)创建一个名为’data’的目录,然后在该目录下存储一些数据文件。也可以用os.mkdir(path)创建一个名为’config’的目录,然后在该目录下存储一些配置文件。
需注意事项:
在使用os.mkdir(path)之前,需要确保path是一个合法的路径,且path中的所有父目录都已经存在。否则,os.mkdir(path)会失败并抛出异常。另外,如果path是一个相对路径,那么它是相对于当前工作目录的。因此,在使用os.mkdir(path)之前,最好先用os.getcwd()获取当前工作目录,并根据需要调整path的值。
以下是MicroPython的内置模块os.mkdir(path)的几个实际运用程序案例:
案例一:在MicroPython板子上创建一个名为’images’的目录,并将一些图像文件复制到该目录下。代码如下:
import os import shutil # 创建一个名为'images'的目录 os.mkdir('images') # 获取当前工作目录 cwd = os.getcwd() # 遍历当前工作目录下的所有文件 for file in os.listdir(cwd): # 如果文件是一个图像文件(以.jpg或.png结尾) if file.endswith('.jpg') or file.endswith('.png'): # 获取文件的完整路径 src = os.path.join(cwd, file) # 获取目标路径(在'images'目录下) dst = os.path.join(cwd, 'images', file) # 复制文件到目标路径 shutil.copy(src, dst)
案例二:在MicroPython板子上创建一个名为’logs’的目录,并在该目录下记录每次启动时的时间和版本信息。代码如下:
import os import time import sys # 创建一个名为'logs'的目录(如果不存在) if 'logs' not in os.listdir(): os.mkdir('logs') # 获取当前时间 now = time.localtime() # 格式化时间为字符串 now_str = '{:04d}-{:02d}-{:02d} {:02d}:{:02d}:{:02d}'.format(now[0], now[1], now[2], now[3], now[4], now[5]) # 获取MicroPython版本信息 version = sys.version # 打开一个名为'boot.log'的文件(追加模式) f = open('logs/boot.log', 'a') # 写入时间和版本信息 f.write('{} {} '.format(now_str, version)) # 关闭文件 f.close()
案例三:在MicroPython板子上创建一个名为’scripts’的目录,并在该目录下存储一些自定义的脚本文件。代码如下:
import os # 创建一个名为'scripts'的目录(如果不存在) if 'scripts' not in os.listdir(): os.mkdir('scripts') # 在'scripts'目录下创建一个名为'test.py'的脚本文件 f = open('scripts/test.py', 'w') # 写入一些测试代码 f.write('print("Hello, world!") ') # 关闭文件 f.close() # 在'scripts'目录下创建一个名为'blink.py'的脚本文件 f = open('scripts/blink.py', 'w') # 写入一些控制LED闪烁的代码 f.write('import machine ') f.write('import time ') f.write('led = machine.Pin(2, machine.Pin.OUT) ') f.write('while True: ') f.write(' led.value(not led.value()) ') f.write(' time.sleep(0.5) ') # 关闭文件 f.close()
案例四:创建单个目录:
import os # 创建单个目录 os.mkdir('/path/to/directory')
在这个示例中,我们使用os模块的mkdir()函数创建一个名为directory的目录。目录的路径为/path/to/directory。这可以用于在程序中创建单个目录。
案例五:创建多级目录:
import os # 创建多级目录 os.makedirs('/path/to/multiple/directories')
在这个示例中,我们使用os模块的makedirs()函数创建多级目录。我们指定的路径为/path/to/multiple/directories,它将创建名为directories的目录,并在其上层目录中创建必要的父级目录。这可以用于创建具有多级嵌套结构的目录。
案例六:创建临时目录:
import os import tempfile # 创建临时目录 temp_dir = tempfile.mkdtemp() print("Temporary Directory:", temp_dir)
在这个示例中,我们使用tempfile模块的mkdtemp()函数创建一个临时目录。这个临时目录将在系统的临时目录中被创建,并返回其路径。我们将临时目录的路径打印出来,可以用于在程序中创建临时文件或存储临时数据。这些实际运用程序案例展示了使用MicroPython内置模块os的mkdir()函数创建目录的功能。通过使用mkdir()函数,我们可以创建单个目录、创建多级目录以及创建临时目录。这对于管理文件和目录结构非常有用,可以帮助我们在程序中创建所需的目录。
案例七:创建单级目录
import uos # 创建名为 "data" 的新目录 uos.mkdir("data")
在这个例子中,我们使用 uos.mkdir() 函数创建一个名为 “data” 的新目录。
案例八:创建多级目录
import uos # 创建多级目录 uos.mkdir("project/files/data", True)
在这个例子中,我们使用 uos.mkdir() 函数创建多级目录。传递参数 True 表示在创建目录时允许递归创建父目录。这样,如果指定的路径中的父目录不存在,系统会自动创建它们。
案例九: 根据时间戳创建目录
import uos import utime # 获取当前时间戳 timestamp = utime.time() # 使用时间戳创建目录 dirname = "backup_" + str(int(timestamp)) uos.mkdir(dirname)
在这个例子中,我们使用 utime.time() 函数获取当前的时间戳,并将其存储在 timestamp 变量中。然后,我们使用时间戳创建一个目录名称,并使用 uos.mkdir() 函数创建新目录。通过将时间戳转换为整数,并将其作为目录名称的一部分,可以在每次创建目录时生成唯一的名称,例如用于备份文件的目录。
这些案例展示了 uos.mkdir() 函数的实际应用,包括创建单级目录、创建多级目录以及根据时间戳创建目录。通过使用 mkdir 函数,你可以在 MicroPython 设备上方便地进行目录的创建操作。请注意,在使用 mkdir 函数时,请确保有足够的权限和合理的路径设置,并根据实际需求进行适当的调整和处理。