HiveNetFileTransfer.saver module

文件保存对象

class HiveNetFileTransfer.saver.TransferSaver(file: str, is_resume: bool = True, file_size: int = None, md5: str = None, is_overwrite: bool = False, temp_ext: str = 'tmp', info_ext: str = 'info', extend_info: 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: int = None, md5: str = None, is_overwrite: bool = False, temp_ext: str = 'tmp', info_ext: str = 'info', extend_info: 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 – 如果已打开信息文件进行文件存储处理, 抛出该异常

close()[源代码]

主动关闭保存对象

finished()[源代码]

对于未知文件大小的情况, 由该函数指定文件写入完成

引发

AlreadyKnowFileSizeError – 对于文件大小已知的处理情况, 如果调用该函数会抛出异常

flush()[源代码]

将缓存中的数据全部写入文件

get_extend_info() dict[源代码]

获取保存的信息字典

返回

返回保存的信息字典

返回类型

dict

get_save_info() dict[源代码]

获取数据保存信息

返回

数据保存的信息字典

{

‘file_size’: -1, # 要接收的文件大小, -1 代表不确定文件实际大小

’write_size’: 0, # 已写入的数据大小

’md5’: ‘’, # 文件的md5值

}

返回类型

dict

write_data(index: int = 0, start: int = None, size: int = None, data: 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