Skip to content

🐻 ByteRecorder

ByteRecorder专门用于记录二进制数据到文件。

用法和Recorder类似,每次add_data只接收一段二进制数据,可以指定数据在文件中要写入的位置。

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

优点:

  • 高度集成功能,简化代码逻辑
  • 接收和写入数据分离,避免多线程时写入文件冲突

🐘 创建对象

初始化参数 类型 默认值 说明
path str
Path
None 文件路径,若不存在会自动创建,如存在则在最后追加数据
cache_size int None 缓存数据条数,为0时不自动记录数据

示例:

from DataRecorder import ByteRecorder

b = ByteRecorder(path='data.file', cache_size=50)

➕ 添加数据

ByteRecorder只能接收二进制格式数据,且一次接收一条数据,可指定数据在文件中的位置。如不指定,默认添加到文件末尾。

b.add_data(b'abcd')  ## 将一条数据添加到文件末尾
b.add_data(b'1234', seek=2) ##  在第2个字节的位置添加一条数据,0开始

注意

指定位置添加数据,会覆盖该位置后面已有数据。

文件内容:

ab1234

该文件首先添加了数据 abcd,然后在 2 的位置添加了 1234,覆盖了后面的 cd。


💾 写入文件

这部分内容与Recorder一致。详见该章节。

💡 示例

这段示例演示用多线程写入多行数据,来模拟多线程下载文件。

from DataRecorder 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)

def main():
    b = ByteRecorder('data.csv')
    for i in range(5):
        Thread(target=add_data, args=(i, b)).start()

if __name__ == '__main__':
    main()

注意

多线程写入数据时,ByteRecorder对象的声明要放在方法体内。

文件内容:

0000000000
1111111111
2222222222
3333333333
4444444444

♾️ ByteRecorder 对象的方法

📌 add_data()

此方法用于添加数据到缓存,可接收一个、一行或多行数据。

参数名称 类型 默认值 说明
data Any 必填 可接收任意格式,接收一维listtupledict时记录为一行,接收二维数据时记录为多行

返回:None


📌 record()

此方法用于把数据记录到文件,然后清空缓存。可把数据保存到一个新文件。

参数名称 类型 默认值 说明
new_path str
Path
None 文件另存为的路径,会保存新文件
返回类型 说明
str 文件路径

📌 clear()

此方法用于清空现有缓存。

参数:无

返回:None


⚙️ ByteRecorder 对象参数设置

ByteRecorder对象的设置使用set.****()的方式进行。

可进行链式操作,如set.fit_head().cache_size(30)

📌 set.path()

此方法用于设置文件路径,更改时会自动保存缓存数据到文件。

参数名称 类型 默认值 说明
path str
Path
必填 文件路径

返回: 当前设置对象


📌 set.cache_size()

此方法用于设置缓存大小,指定采集多少条自动记录到文件,为0时不自动记录。

参数名称 类型 默认值 说明
size int 必填 缓存数据条数

返回: 当前设置对象


📌 set.show_msg()

此方法用于设置是否显示运行信息。

参数名称 类型 默认值 说明
on_off bool 必填 bool类型表示开或关

返回: 当前设置对象


🔣 ByteRecorder 对象的属性

📌 path

此属性以字符串方式返回当前记录的文件路径。可赋值设置。更改时会自动保存缓存数据到文件。

类型:str


📌 type

此属性以字符串方式返回当前文件的类型。可赋值设置,即可无视文件后缀指定记录格式。

类型:str


📌 data

此属性返回当前保存在缓存里的数据。

类型:list


📌 cache_size

此属性返回缓存的大小,表示记录的条数。

类型:int


📌 show_msg

此属性用于设置是否打印程序运行时产生的提示信息。

类型:bool