📒 byte 文件
本节介绍向 byte 文件添加数据。
Recorder支持记录二进制数据到文件,可用于多线程文件下载、记录监听数据流等场景。支持任意后缀文件。
✅️️ 设置文件类型为二进制
Recorder()初始化时向file_type参数传入b或byte,或使用set.file_type()方法设置这两个值。
from DrissionRecord import Recorder
r = Recorder('data', file_type='b') # 在初始化时指定
r.set.file_type('b') # 用set.file_type()方法设置
✅️️ 添加二进制数据
使用 byte 类型文件时只能接收二进制格式数据,且一次接收一条,可指定数据在文件中的位置。如不指定,默认添加到文件末尾。
说明
向 byte 类型文件记录数据时,add_data()方法的table参数无效。
| 参数名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
data | bytes | 必填 | 二进制数据 |
coord | int | None | 在文件中的位置,单位为字节,None表示最后 |
注意
指定位置添加数据,会覆盖该位置后面已有数据。
from DrissionRecord import Recorder
r = Recorder(path='data')
r.set.file_type('b') # 设置文件类型为byte
r.add_data(b'abcd') # 将一条数据添加到文件末尾
r.add_data(b'1234', coord=2) # 在第2个字节的位置插入一条数据 ,0开始
r.record()
文件内容:
ab1234
该文件首先添加了数据 abcd,然后在 2 的位置添加了 1234,覆盖了后面的 cd。
✅️️ 示例
这段示例演示用多线程写入多行数据,来模拟多线程下载文件。
from DrissionRecord import Recorder
from threading import Thread
def add_data(num: int, recorder: Recorder):
data = str(num) * 10 + '\n'
data = bytes(data, encoding='utf-8')
coord = num * 11
recorder.add_data(data, coord)
r = Recorder('tmp\\data')
r.set.file_type('b')
for i in range(5):
t = Thread(target=add_data, args=(i, r))
t.start()
t.join()
r.record()
文件内容:
0000000000
1111111111
2222222222
3333333333
4444444444