【雕爷学编程】MicroPython手册之文件操作模块 write-写入文件

在这里插入图片描述

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的write方法是用于向一个文件对象中写入内容的方法,它返回实际写入的字节数。

它的主要特点有:

它接受一个必需的参数,表示要写入的内容。内容可以是一个字符串或一个字节对象,根据文件的类型和模式而定。如果写入的是文本文件,可以指定编码方式,如utf-8、gbk等。如果写入的是二进制文件,可以使用b标志来表示,如rb、wb等。
它可以向不同类型的文件中写入内容,如文本文件、二进制文件、图片文件等。它会根据文件对象的当前位置来写入内容,并且每次写入后,会将文件对象的位置向后移动相应的字节数。可以使用seek和tell方法来改变或获取文件对象的位置。
它会根据内容的大小来确定要写入的字节数。如果内容为空,它不会写入任何内容,并返回0。如果内容非空,它会尽可能地写入所有的内容,并返回实际的字节数。如果写入过程中出现错误或异常,它会停止写入,并返回已写入的字节数。

MicroPython的write方法的应用场景有:

写入文件:可以使用write方法来向一个新建或已存在的文件中写入内容,并存储在存储设备中。例如,可以将传感器的数据写入一个CSV文件,或者将一段文字写入一个文本文件。
修改文件:可以使用write方法来向一个已存在的文件中修改内容,并覆盖原有的内容。例如,可以修改一个二进制文件中的某个字节或位,或者修改一个文本文件中的某个字符或单词。
发送网络数据:可以使用write方法来向一个网络套接字对象中发送数据,并进行通信或传输。例如,可以向一个TCP套接字中发送HTTP请求或响应数据,或者向一个UDP套接字中发送DNS查询或响应数据。
MicroPython的write方法需注意事项有:

写入文件时需要指定正确的模式和编码方式,否则可能会出现错误或乱码。
写入文件时需要考虑文件和内容的大小和类型,否则可能会导致数据丢失或错误。
写入文件时可能会出现异常,需要使用try-except语句来捕获和处理。

MicroPython的write方法几个实际运用程序案例如下:

案例1:将传感器DHT11的数据每隔一秒写入一个CSV文件::

import uos
import machine
import time

# 创建DHT11对象,连接到引脚4
dht11 = machine.DHT11(machine.Pin(4))

# 打开一个CSV文件,追加模式
f = uos.open('dht11.csv', 'a')

# 循环10次
for i in range(10):
    # 读取温湿度数据
    temp, hum = dht11.read()
    # 获取当前时间戳
    timestamp = time.time()
    # 写入一行数据,用逗号分隔
    f.write('{},{},{}\n'.format(timestamp, temp, hum))
    # 延时1秒
    time.sleep(1)

# 关闭文件
f.close()

案例2:修改一个文本文件中的所有MicroPython为Python,并保存为新的文本文件::

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()

案例3:向一个TCP套接字中发送HTTP请求,获取根目录的内容::

import uos
import usocket

# 创建一个TCP套接字对象
s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)

# 连接到一个HTTP服务器,端口为80
s.connect(('example.com', 80))

# 构造一个HTTP请求,获取根目录的内容
request = b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n'

# 向套接字中发送请求数据
s.write(request)

# 关闭套接字
s.close()

案例4:写入文本内容到文件:

# 打开文件以写入模式
with open('output.txt', 'w') as file:
    # 写入文本内容
    file.write("Hello, World!\n")
    file.write("This is a sample text.")

在这个示例中,我们使用open()函数以写入模式打开一个名为output.txt的文件。然后,使用write()方法将文本内容写入文件。我们可以多次调用write()方法来写入不同的文本内容。在写入完成后,我们使用with语句自动关闭文件,确保写入操作的完成和资源的释放。

案例5:写入二进制数据到文件::

# 打开文件以二进制写入模式
with open('data.bin', 'wb') as file:
    # 创建字节数组
    data = bytearray([0x01, 0x02, 0x03, 0x04, 0x05])
    # 写入字节数组到文件
    file.write(data)

在这个示例中,我们使用open()函数以二进制写入模式打开一个名为data.bin的文件。然后,我们创建一个字节数组data,其中包含了一些二进制数据。使用write()方法将字节数组直接写入文件。在写入完成后,同样使用with语句自动关闭文件。

案例6:写入CSV数据到文件::

import csv

# 打开文件以写入模式
with open('data.csv', 'w') as file:
    # 创建CSV写入器
    writer = csv.writer(file)
    # 写入CSV数据行
    writer.writerow(['Name', 'Age', 'Country'])
    writer.writerow(['John', '25', 'USA'])
    writer.writerow(['Alice', '30', 'UK'])

在这个示例中,我们使用open()函数以写入模式打开一个名为data.csv的文件。然后,我们使用csv.writer()函数创建一个CSV写入器对象,用于将数据以CSV格式写入文件。使用writerow()方法写入每一行数据,每行数据以列表形式传递给writerow()方法。在写入完成后,同样使用with语句自动关闭文件。

案例7:将文本数据写入文件

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

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

在这个例子中,我们创建了一个文本字符串 data,然后使用 open() 函数以写入模式 “w” 打开文件。接下来,我们使用 write() 方法将数据写入文件。最后,我们使用 close() 方法关闭文件。

案例8:将二进制数据写入文:

import array

filename = "data.bin"
data = array.array("B", [0x01, 0x02, 0x03, 0x04, 0x05])

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

在这个例子中,我们创建了一个 array.array 对象 data,其中包含了一些字节数据。然后,我们使用 open() 函数以二进制写入模式 “wb” 打开文件。接下来,我们使用 write() 方法将二进制数据写入文件。最后,我们使用 close() 方法关闭文件。

案例9:将多行文本写入文件

filename = "data.txt"
lines = ["Line 1", "Line 2", "Line 3"]

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

在这个例子中,我们创建了一个包含多行文本的列表 lines。然后,我们使用 open() 函数以写入模式 “w” 打开文件。接下来,我们使用 write() 方法将每行文本写入文件,并使用 “\n”.join(lines) 将多行文本连接为一个字符串,并在每行之间添加换行符。最后,我们使用 close() 方法关闭文件。

这些案例展示了 MicroPython 中 write() 方法的实际应用,用于将文本或二进制数据写入文件中。根据您的需求和数据类型,您可以选择适当的打开模式和方法参数来写入所需的数据。

【雕爷学编程】MicroPython手册之文件操作模块 write-写入文件_第1张图片

你可能感兴趣的:(MicroPython手册,单片机,嵌入式硬件,python,MicroPython,write-写入文件,文件操作模块)