MicroPython手册之内置模块 mkdir

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 函数时,请确保有足够的权限和合理的路径设置,并根据实际需求进行适当的调整和处理。