【雕爷学编程】MicroPython手册之文件操作模块 open

在这里插入图片描述

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的open函数是用于打开一个文件的函数,它返回一个文件对象,可以对文件进行读写操作。

它的主要特点有:

它接受两个参数,第一个是文件的名称,第二个是文件的模式。文件的模式可以是r(只读)、w(写入)、a(追加)、x(创建)、r+(读写)、w+(写入并读取)、a+(追加并读取)或者x+(创建并读取)。如果不指定模式,默认为只读模式。
它可以打开不同类型的文件,如文本文件、二进制文件、图片文件等。如果打开的是文本文件,可以指定编码方式,如utf-8、gbk等。如果打开的是二进制文件,可以使用b标志来表示,如rb、wb等。
它返回的文件对象有一些方法和属性,如read()、write()、seek()、tell()、close()等方法,以及name、mode、closed等属性。这些方法和属性可以用来操作文件的内容和状态。

MicroPython的open函数的应用场景有:

读取文件:可以使用open函数来打开一个已存在的文件,然后使用read方法来读取文件的全部或部分内容。例如,可以从一个配置文件中读取参数,或者从一个文本文件中读取一行或一段文字。
写入文件:可以使用open函数来打开一个新建或已存在的文件,然后使用write方法来写入内容。例如,可以将传感器的数据写入一个CSV文件,或者将一段文字写入一个文本文件。
修改文件:可以使用open函数来打开一个已存在的文件,然后使用seek和tell方法来定位到指定的位置,然后使用write方法来修改内容。例如,可以修改一个二进制文件中的某个字节或位,或者修改一个文本文件中的某个字符或单词。

MicroPython的open函数需注意事项有:

打开文件时需要指定正确的模式和编码方式,否则可能会出现错误或乱码。
打开文件后需要及时关闭文件,否则可能会占用资源或导致数据丢失。
打开文件时可能会出现异常,需要使用try-except语句来捕获和处理。

MicroPython的open函数几个实际运用程序案例如下:

案例1:从一个JSON文件中读取配置参数,并打印出来::

import uos
import ujson

# 打开一个JSON文件,只读模式
f = uos.open('config.json', 'r')

# 读取文件的全部内容,并解析为字典
config = ujson.loads(f.read())

# 关闭文件
f.close()

# 打印配置参数
print(config)

案例2:将一张图片转换为灰度图片,并保存为新的图片::

import uos
from machine import Pin, SPI
import st7789

# 创建SPI对象,连接到引脚13, 14, 15, 16
spi = SPI(1, baudrate=20000000, polarity=1, phase=0, sck=Pin(13), mosi=Pin(14), miso=Pin(15))

# 创建ST7789对象,连接到引脚17, 18, 19
tft = st7789.ST7789(spi, 240, 240, reset=Pin(17), cs=Pin(18), dc=Pin(19))

# 打开一张图片文件,二进制只读模式
f = uos.open('image.jpg', 'rb')

# 读取图片的宽度和高度
width = int.from_bytes(f.read(2), 'little')
height = int.from_bytes(f.read(2), 'little')

# 创建一个新的图片文件,二进制写入模式
g = uos.open('gray.jpg', 'wb')

# 写入新图片的宽度和高度
g.write(width.to_bytes(2, 'little'))
g.write(height.to_bytes(2, 'little'))

# 遍历每个像素
for y in range(height):
    for x in range(width):
        # 读取原图片的RGB值
        r = int.from_bytes(f.read(1), 'little')
        g = int.from_bytes(f.read(1), 'little')
        b = int.from_bytes(f.read(1), 'little')
        # 计算灰度值
        gray = int(0.299 * r + 0.587 * g + 0.114 * b)
        # 写入新图片的灰度值
        g.write(gray.to_bytes(1, 'little'))
        g.write(gray.to_bytes(1, 'little'))
        g.write(gray.to_bytes(1, 'little'))
        # 在屏幕上显示灰度值
        tft.pixel(x, y, st7789.color565(gray, gray, gray))

# 关闭文件
f.close()
g.close()

案例3:在一个文本文件中查找并替换某个单词,并保存为新的文本文件::

import uos

# 打开一个文本文件,只读模式,utf-8编码
f = uos.open('text.txt', 'r', encoding='utf-8')

# 打开一个新的文本文件,写入模式,utf-8编码
g = uos.open('new.txt', 'w', encoding='utf-8')

# 定义要查找和替换的单词
old_word = 'MicroPython'
new_word = 'Python'

# 遍历每一行
for line in f:
    # 替换单词
    new_line = line.replace(old_word, new_word)
    # 写入新文件
    g.write(new_line)

# 关闭文件
f.close()
g.close()

案例4:读取并打印文件内容:

# 打开文件
with open('data.txt', 'r') as file:
    # 读取文件内容
    content = file.read()
    # 打印文件内容
    print(content)

在这个示例中,我们使用open()函数以读取模式打开一个名为data.txt的文件。然后,通过read()方法读取文件的内容,并将其存储在变量content中。最后,我们打印文件的内容。

案例5:写入数据到文件::

# 打开文件
with open('data.txt', 'w') as file:
    # 写入数据
    file.write('Hello, MicroPython!')

在这个示例中,我们使用open()函数以写入模式打开一个名为data.txt的文件。然后,使用write()方法向文件中写入数据,这里是字符串Hello, MicroPython!。由于文件以写入模式打开,如果文件已存在,写入操作将覆盖文件的内容。如果文件不存在,将创建一个新文件并写入数据。

案例六:逐行读取文件并处理数据:

# 打开文件
with open('data.txt', 'r') as file:
    # 逐行读取文件
    for line in file:
        # 处理每一行数据
        processed_line = line.strip().upper()
        # 打印处理后的数据
        print(processed_line)

在这个示例中,我们使用open()函数以读取模式打开一个名为data.txt的文件。然后,使用for循环逐行读取文件的内容。对于每一行,我们进行一些处理操作,如去除首尾空白字符,并将其转换为大写。最后,我们打印处理后的数据。这些实际运用程序案例展示了如何使用MicroPython的open()函数进行文件操作。您可以通过打开文件并使用适当的模式(如读取模式’r’或写入模式’w’)来读取和写入文件的内容。请注意,在操作文件时,要确保适当地打开和关闭文件,以避免资源泄漏和数据损坏。

案例7:读取文本文件内容

filename = "data.txt"

# 打开文件以读取数据
file = open(filename, "r")
data = file.read()
file.close()

print(data)

在这个例子中,我们使用 open() 函数打开一个文本文件,指定文件名和打开模式为 “r”(读取模式)。然后,我们使用 read() 方法读取文件内容,并将其存储在变量 data 中。最后,我们使用 print() 函数将文件内容打印出来。

案例8:写入文本文件内:

filename = "data.txt"
data = "Hello, MicroPython!"

# 打开文件以写入数据
file = open(filename, "w")
file.write(data)
file.close()

在这个例子中,我们使用 open() 函数打开一个文本文件,指定文件名和打开模式为 “w”(写入模式)。然后,我们使用 write() 方法将数据写入文件。最后,我们使用 close() 方法关闭文件。

案例9:以追加模式写入文本文:

filename = "data.txt"
data = "Hello again, MicroPython!"

# 打开文件以追加数据
file = open(filename, "a")
file.write(data)
file.close()

在这个例子中,我们使用 open() 函数打开一个文本文件,指定文件名和打开模式为 “a”(追加模式)。然后,我们使用 write() 方法将数据追加到文件末尾。最后,我们使用 close() 方法关闭文件。

这些案例展示了 MicroPython 中 open() 函数的实际应用,用于读取和写入文本文件内容。请注意,在操作文件之前,您需要确保文件存在并具有适当的权限。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值