HiveNetCore.utils.file_tool module

文件处理工具模块

class HiveNetCore.utils.file_tool.EnumFileSizeUnit(value)[源代码]

基类:enum.Enum

文件大小单位

B = 1
GB = 1073741824
KB = 1024
MB = 1048576
TB = 1099511627776
class HiveNetCore.utils.file_tool.FileTool[源代码]

基类:object

文件处理工具

提供各类文件、目录相关的常用工具函数(静态方法)

classmethod cmp_dir(dir1: str, dir2: str, is_cmp_file_content: bool = False, is_sort: bool = False) dict[源代码]

比较两个目录

参数
  • dir1 (str) – 待比较目录1

  • dir2 (str) – 待比较目录2

  • is_cmp_file_content (bool) – default=False, 是否比较文件内容

  • is_sort (bool) – default=False, 是否对结果排序

返回

比较结果, 格式如下:

{

‘dir1_only_dir’: […目录清单], # 目录1独有的目录

’dir1_only_file’: […文件清单], # 目录1独有的文件

’dir2_only_dir’: […目录清单], # 目录2独有的目录

’dir2_only_file’: […文件清单], # 目录2独有的文件

’diff’: […文件清单], # 双方公用但内容不一致的文件清单

}

返回类型

dict

classmethod cmp_file(file1: str, file2: str) bool[源代码]

比较两个文件内容是否一致

参数
  • file1 (str) – 待比较文件1

  • file2 (str) – 待比较文件2

返回

比较结果, 相同返回True

返回类型

bool

static copy_all_with_path(src_path='', dest_path='', regex_str='', exist_ok=False)[源代码]

复制指定文件夹下的所有文件及文件夹到目标文件夹

参数
  • src_path (string) – default=’’, 源文件夹

  • dest_path (string) – default=’’, 目标文件夹

  • regex_str (string) – default=’’, 文件名匹配的正则表达式

  • exist_ok (bool) – default=Fasle, 遇到文件存在的情况忽略错误

classmethod copy_file(src_file: str, dest_file: str, overwrite: bool = False)[源代码]

复制文件到指定目录

参数
  • src_file (str) – 源文件

  • dest_file (str) – 目标文件

  • overwrite (bool) – default=False, 文件已存在的情况下是否覆盖

static create_dir(path, exist_ok=False)[源代码]

创建指定的路径

参数
  • path (string) – 需要创建的路径

  • exist_ok (bool) – default=False, 如果路径存在是否不抛异常

引发

FileExistsError – 路径存在的情况抛出文件存在异常

示例

FileTool.create_dir(“c:/test/”)

static create_fix_size_file(filename: str, size: int, unit=EnumFileSizeUnit.B)[源代码]

生成指定大小的文件

参数
  • filename (str) – 要生成的文件

  • size (int) – 大小

  • unit (EnumFileSizeUnit) – default=EnumFileSizeUnit.B, 单位

classmethod get_all_list_by_path(path: str, prefix_path: str = '', is_sort: bool = False) dict[源代码]

从指定路径获取文件和目录清单

参数
  • path (str) – 要获取清单的路径

  • prefix_path (str) – default=’’, 前缀路径, 自动合并到列表中的目录或文件前面

  • is_sort (bool) – default=False, 是否对结果排序

返回

结果字典:

{

‘dir’: [], # 目录清单

’file’: [], # 文件清单

}

注: 清单中的路径不包含path部分

返回类型

dict

static get_dir_name(path)[源代码]

获取指定目录的目录名

参数

path (string) – 要获取的目录路径

返回

目录名

返回类型

string

static get_dirlist(path='', regex_str='', is_fullpath=True)[源代码]

获取指定目录下的子目录清单

参数
  • path (string) – default=’’, 需要获取子目录的目录

  • regex_str (string) – default=’’, 需匹配目录名的正则表达式(‘’代表无需匹配)

  • is_fullpath (bool) – default=True, 结果的目录名是否包含路径

返回

目录清单数组(不带最后的分隔符)

返回类型

string[]

引发

FileNotFoundError – 当path不存在的情况下, 会抛出该异常

static get_exefile_fullname()[源代码]

获得执行主程序文件名(含路径)

返回

执行主程序文件名(含路径)

返回类型

string

示例

filepath = FileTool.get_exefile_fullname()

static get_exefile_name()[源代码]

获得执行主程序文件名(不含路径, 含扩展名)

返回

文件名(不含路径, 含扩展名)

返回类型

string

示例

filepath = FileTool.get_exefile_name()

static get_exefile_name_no_ext()[源代码]

获得执行主程序文件名(不含路径, 不含扩展名)

返回

文件名(不含路径, 不含扩展名)

返回类型

string

示例

filepath = FileTool.get_exefile_name_no_ext()

static get_exefile_path()[源代码]

获得执行主程序的路径(不含文件名)

返回

程序路径(不含文件名, 最后一个字符不为路径分隔符)

返回类型

string

示例

filepath = FileTool.get_exefile_path()

static get_file_ext(file)[源代码]

获得指定文件的扩展名

参数

file (string) – 文件路径

返回

文件扩展名

返回类型

string

classmethod get_file_md5(file, buffer_size: int = 4096)[源代码]

获取文件md5值

参数

file (str|FileIO|bytes]) – 文件路径, 或已打开的文件对象, 或文件字节数组

static get_file_name(file)[源代码]

获得执行指定文件的文件名(不含路径, 含扩展名)

参数

file (string) – 文件路径

返回

文件名(不含路径, 含扩展名)

返回类型

string

static get_file_name_no_ext(file)[源代码]

获得指定文件的文件名(不含路径, 不含扩展名)

参数

file (string) – 文件路径

返回

文件名(不含路径, 不含扩展名)

返回类型

string

static get_file_path(file)[源代码]

获得指定文件的路径(不含文件名)

参数

file (string) – 文件路径

返回

程序路径(不含文件名, 最后一个字符不为路径分隔符)

返回类型

string

static get_file_text(filename, encoding='utf-8')[源代码]

获取文件文本

参数
  • filename (string) – 要获取的文件名(含路径)

  • encoding (string) –

    default=’utf-8’, 文件内容的编码

    注: 如果将encoding设置为None, 将使用chardet判断编码

static get_filelist(path='', regex_str='', is_fullname=True)[源代码]

获取指定目录下的文件清单

参数
  • path (string) – default=’’, 需要获取文件的目录

  • regex_str (string) – default=’’, 需匹配文件名的正则表达式(‘’代表无需匹配)

  • is_fullname (bool) – default=True, 结果的文件名是否包含路径

返回

文件清单数组

返回类型

string[]

示例

filelist = FileTools.get_filelist(path=’c:')

static get_parent_dir(path)[源代码]

获取指定路径或文件的上级路径

参数

path (str) – 路径或文件

static is_file_in_subdir(file: str, dir: str) bool[源代码]

判断文件是否在指定目录的子目录下

注: 不判断文件或目录是否存在

参数
  • file (str) – 文件

  • dir (str) – 目录

返回

判断结果

返回类型

bool

static is_zip_encrypted(filename: str, **kwargs) bool[源代码]

判断压缩文件是否已加密

参数

filename (string) – 压缩文件

返回

压缩文件是否已加密

返回类型

bool

static read_zip_file(filename, member, pwd=None, **kwargs)[源代码]

读取压缩包中的某个文件的二进制数据

参数
  • filename (string) – 要处理的压缩文件

  • member (string) – 要读取的包内文件名

  • pwd (bytes) –

    default=None, 解压密码

    示例: pwd=’123456’.encode(‘utf-8’)

  • 动态参数 (-) –

  • 支持后续兼容性的扩展 (kwargs) –

引发

FileNotFoundError – src_path指定的文件或目录不存在时抛出该异常

static remove_all_with_path(path='', regex_str='', with_sub_path=False)[源代码]

删除指定文件夹下的所有文件及文件夹

参数
  • path (string) – default=’’, 要处理的文件夹

  • regex_str (string) – default=’’, 文件名匹配的正则表达式

  • with_sub_path (bool) – default=False, 是否包含子目录

static remove_dir(path)[源代码]

删除指定目录(及目录下的所有文件及目录)

由于Windows平台在处理删除目录时会存在一些权限异常, 因此采用命令执行方式删除

参数

path (string) – 要删除的目录

引发
  • FileNotFoundError – 找不到指定的路径时抛出该异常

  • PermissionError – 没有权限时抛出该异常

  • NotADirectoryError – 如果给出的路径不是目录而是文件时抛出

static remove_file(filename)[源代码]

删除指定文件

参数

filename (string) – 需要删除的文件路径

引发
  • FileNotFoundError – 路径不是文件或文件不存在时抛出该异常

  • PermissionError – 没有权限时抛出该异常

static remove_files(path='', regex_str='')[源代码]

删除指定目录下的文件

参数
  • path (string) – default=’’, 需要删除的文件的目录

  • regex_str (string) – default=’’, 需匹配文件名的正则表达式(‘’代表无需匹配)

引发
  • FileNotFoundError – 当path不存在的情况下, 会抛出该异常

  • PermissionError – 没有权限时抛出该异常

  • NotADirectoryError – 如果给出的路径不是目录而是文件时抛出

static remove_sub_dirs(path='', regex_str='')[源代码]

删除指定目录下的子目录(及子目录下的文件和目录)

参数
  • path (string) – default=’’, 需要删除的子目录的目录

  • regex_str (string) – default=’’, 需匹配目录名的正则表达式(‘’代表无需匹配)

引发
  • FileNotFoundError – 当path不存在的情况下, 会抛出该异常

  • PermissionError – 没有权限时抛出该异常

  • NotADirectoryError – 如果给出的路径不是目录而是文件时抛出

static unzip(filename, dest_path=None, members=None, pwd=None, **kwargs)[源代码]

解压缩文件到指定路径

参数
  • filename (string) – 要解压缩的文件

  • dest_path (string) –

    default=None, 解压后目标路径

    注: 为None时解压至文件所在路径, 放入与文件名(去掉扩展名)相同的目录中

  • members (tuple|list) –

    default=None, 指定单独解压的文件清单(注意路径分隔符为’/’), 不支持解压缩指定目录

    示例: members=[‘a.txt’, ‘path/b.txt’]

  • pwd (bytes) –

    default=None, 解压密码

    示例: pwd=’123456’.encode(‘utf-8’)

  • 动态参数 (-) –

  • 支持后续兼容性的扩展 (kwargs) –

引发

FileNotFoundError – src_path指定的文件或目录不存在时抛出该异常

static write_bytes_to_file(filename: str, data: bytes, position=0, file_obj=None)[源代码]

在文件指定位置写入字节数组

参数
  • filename (str) – 要写入的文件

  • data (bytes) – 写入数据

  • position (int) – default=0, 写入位置

  • file_obj (object) – default=None, 已打开的文件对象, 如果传入则代表使用该文件对象执行文件处理

static zip(src_path, dest_path=None, dest_filename=None, mode='w', compression=8, allowZip64=True, pwd=None, **kwargs)[源代码]

压缩指定文件或路径

参数
  • src_path (string) – 要压缩的文件或目录

  • dest_path (string) – default=None, 处理后的压缩包存放路径, None代表存放在src_path所在的目录下

  • dest_filename (string) – default=None, 处理后的压缩包文件名, None代表使用对应的文件或目录名(增加.zip)

  • mode (string) –

    default=’w’, 打开zip文件的模式

    ’w’ - 表示新建一个zip文档或覆盖一个已经存在的zip文档

    ’a’ - 表示将数据附加到一个现存的zip文档中

  • compression (int) –

    default=zipfile.ZIP_DEFLATED, 压缩方法, 可以选的值包括:

    zipfile.ZIP_STORED = 0 - 仅打包存储(不压缩)

    zipfile.ZIP_DEFLATED = 8 - 压缩存储

  • allowZip64 (bool) – default=True, 当要处理的压缩包大于2G时, 建议打开该开关

  • pwd (bytes) –

    default=None, 解压密码(该密码设置无效)

    示例: pwd=’123456’.encode(‘utf-8’)

  • 动态参数 (-) –

  • 支持后续兼容性的扩展 (kwargs) –

引发

FileNotFoundError – src_path指定的文件或目录不存在时抛出该异常