HiveNetCore.utils.file_tool module¶
文件处理工具模块
- class HiveNetCore.utils.file_tool.EnumFileSizeUnit(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[源代码]¶
基类:
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_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()
- 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 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
- classmethod move_file(src_file: str, dest_file: str, overwrite: bool = False)[源代码]¶
移动文件
- 参数
src_file (str) – 源文件
dest_file (str) – 目标文件
overwrite (bool) – default=False, 文件已存在的情况下是否覆盖
- 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指定的文件或目录不存在时抛出该异常