HiveNetFileTransfer.saver module¶
文件保存对象
- class HiveNetFileTransfer.saver.TransferSaver(file: str, is_resume: bool = True, file_size: Optional[int] = None, md5: Optional[str] = None, is_overwrite: bool = False, temp_ext: str = 'tmp', info_ext: str = 'info', extend_info: Optional[dict] = None, thread_num: int = 1, block_size: int = 4096, cache_size: int = 1024, auto_expand: bool = True)[源代码]¶
基类:
object文件保存对象
- __init__(file: str, is_resume: bool = True, file_size: Optional[int] = None, md5: Optional[str] = None, is_overwrite: bool = False, temp_ext: str = 'tmp', info_ext: str = 'info', extend_info: Optional[dict] = None, thread_num: int = 1, block_size: int = 4096, cache_size: int = 1024, auto_expand: bool = True)[源代码]¶
初始化文件保存对象
- 参数
file (str) – 文件保存路径(含文件名)
is_resume (bool) –
default=True, 指定是否续传(自动查找已下载的信息), 如果不指定续传将自动删除原来已下载临时文件
注:如果指定续传, 且可以找到原来的临时文件, 则以下参数将使用原来的信息, 如果有传入则会进行差异值的校验:
file_size、md5
file_size (int) – default=None, 文件大小, 单位为byte, 如果为None代表未知文件大小, 此时auto_expand参数固定为True
md5 (str) – default=None, 验证文件的md5字符串, 如果不传代表不进行验证
is_overwrite (bool) – default=False, 是否覆盖已有文件, 如果为否, 则目标文件已存在的情况下抛出异常
temp_ext (str) – default=’tmp’, 处理过程中临时文件扩展名
info_ext (str) – default=’info’, 处理过程中信息文件扩展名
extend_info (dict) – default=None, 处理过程中要保存的信息字典, 例如保存文件下载路径, 引用页等信息
thread_num (int) – default=1, 写入处理线程数量
block_size (int) – default=4096, 每次写入块大小, 单位为byte
cache_size (int) – default=1024, 单线程缓存大小, 单位为kb(注意:真实缓存大小还需要乘以处理线程数量)
auto_expand (bool) – default=True, 是否自动扩展文件大小(否则在初始化时会自动创建指定大小的文件)
- 引发
FileExistsError – 如果下载文件已存在且不允许覆盖的情况抛出异常
FileNotFoundError – 续传情况下临时文件不存在则抛出异常
InfoFileLockError – 如果已打开信息文件进行文件存储处理, 抛出该异常
- finished()[源代码]¶
对于未知文件大小的情况, 由该函数指定文件写入完成
- 引发
AlreadyKnowFileSizeError – 对于文件大小已知的处理情况, 如果调用该函数会抛出异常
- get_save_info() dict[源代码]¶
获取数据保存信息
- 返回
数据保存的信息字典
{
‘file_size’: -1, # 要接收的文件大小, -1 代表不确定文件实际大小
’write_size’: 0, # 已写入的数据大小
’md5’: ‘’, # 文件的md5值
}
- 返回类型
dict
- write_data(index: int = 0, start: Optional[int] = None, size: Optional[int] = None, data: Optional[bytes] = None) dict[源代码]¶
写入数据的处理方法
- 参数
index (int) – default=0, 指定写入数据的线程索引
start (int) – default=None, 数据在文件的开始位置, 如果传空代表请求该线程索引对应的获取任务信息
size (int) – default=None, 传入数据的长度
data (bytes) – default=None, 传入数据字节数组
- 返回
返回下一个任务要获取的信息字典, 格式为:
{
‘status’: 0, # 状态, 0-成功, 1-开始位置与线程缓存不一致, 2-全部下载完成, 3-文件md5校验失败
’index’: 0, # 当前线程索引
’start’: -1, # 开始位置, 如果传入-1代表该线程已无获取任务
’size’: 0, # 要获取数据的大小
}
- 返回类型
dict