跳到主要内容

📒 byte 文件


本节介绍向 byte 文件添加数据。

Recorder支持记录二进制数据到文件,可用于多线程文件下载、记录监听数据流等场景。支持任意后缀文件。

✅️️ 设置文件类型为二进制

Recorder()初始化时向file_type参数传入bbyte,或使用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参数无效。

参数名称类型默认值说明
databytes必填二进制数据
coordintNone在文件中的位置,单位为字节,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