📑 ByteRecorder
ByteRecorder
专 门用于记录二进制数据到文件。
用法和Recorder
类似,每次add_data
只接收一段二进制数据,可以指定数据在文件中要写入的位置。
ByteRecorder
可用于多线程文件下载、记录监听数据流等场景。支持任意后缀文件。
写入文件、备份文件、参数设置等功能与Recorder
一致,请查看Recorder
相关章节。本节只介绍不一样的部分。
✅️ 创建对象
初始化参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
path | str Path | None | 文件路径,若不存在会自动创建,如存在则在最后追加数据 |
cache_size | int | None | 缓存数据条数,为0 时不自动记录数据 |
示例:
from DrissionRecord import ByteRecorder
b = ByteRecorder(path='data.file', cache_size=50)
✅️ 添加数据
ByteRecorder
只能接收二进制格式数据,且一次接收一条数据,可指定数据在文件中的位置。如不指定,默认添加到文件末尾。
初始化参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
data | bytes | 必填 | 二进制数据 |
seek | int | None | 在文件中的位置,None 表示最后 |
from DrissionRecord import ByteRecorder
b = ByteRecorder(path='data.file', cache_size=50)
b.add_data(b'abcd') ## 将一条数据添加到文件末尾
b.add_data(b'1234', seek=2) ## 在第2个字节的位置插入一条数据,0开始
注意
指定位置添加数据,会覆盖该位置后面已有数据。
文件内容:
ab1234
该文件首先添加了数据 abcd,然后在 2 的位置添加了 1234,覆盖了后面的 cd。
✅️ 示例
这段示例演示用多线程写入多行数据,来模拟多线程下载文件。
from DrissionRecord import ByteRecorder
from threading import Thread
def add_data(num: int, recorder: ByteRecorder):
data = str(num) * 10 + '\n'
data = bytes(data, encoding='utf-8')
seek = num * 11
recorder.add_data(data, seek)
b = ByteRecorder('data')
for i in range(5):
t = Thread(target=add_data, args=(i, b))
t.start()
t.join()
b.record()
文件内容:
0000000000
1111111111
2222222222
3333333333
4444444444