mini_toolbox package

Submodules

mini_toolbox.api_json module

用于操作免认证的api获取返回json数据

mini_toolbox.api_json.api_get(api_url: str, params: Optional[dict] = None, headers: Optional[dict] = None) dict[源代码]

获取GET请求响应中json数据

参数
  • api_url (str) -- api接口地址

  • params (dict) -- 参数字典

  • headers (dict) -- 请求头字典

返回

接口返回的json数据

返回类型

dict

mini_toolbox.api_json.api_post(api_url: str, params: Optional[dict] = None, headers: Optional[dict] = None) dict[源代码]

获取POST请求响应中json数据

参数
  • api_url (str) -- api接口地址

  • params (dict) -- 参数字典

  • headers (dict) -- 请求头字典

返回

接口返回的json数据

返回类型

dict

mini_toolbox.archive module

解压缩工具, 包括: zip/unzip/tar/untar

mini_toolbox.archive.tar(arch_name: str, path_list: Union[list, str], mode: str = 'gz') Optional[int][源代码]

用于压缩列表中指定的路径

参数
  • arch_name (str) -- 压缩至指定文件路径

  • path_list (Union[list, str]) -- 压缩指定的路径, 支持文件路径或目录路径

  • mode (str) -- 压缩模式, 默认为gz, 可选:(None/bz2/xz)

返回

返回 (1|2|None), 当arch_name或file_list为空时返回1, 当path_list中存在非法路径时返回2, 其它情况返回None

返回类型

Optional[int]

mini_toolbox.archive.untar(arch_name: str, to_dir: Optional[str] = None, mode: Optional[str] = None) Optional[int][源代码]

用于解压文件至指定的路径

参数
  • arch_name (str) -- 压缩包路径

  • to_dir (Optional[str]) -- 解压至指定路径, 默认为当前路径

  • mode (Optional[str]) -- 压缩模式, 默认为自动检测, 可选:(gz/bz2/xz)

返回

返回 (1|None), 当arch_name为空时返回1

返回类型

Optional[int]

mini_toolbox.archive.unzip(arch_name: str, to_dir: Optional[str] = None, pwd: Optional[bytes] = None) Optional[list][源代码]

用于解压文件至指定的路径

参数
  • arch_name (str) -- 压缩包路径

  • dst_dir (Optional[str]) -- 解压至指定路径, 默认为当前路径

  • pwd (Optional[bytes]) -- 压缩包密码, 默认为未加密

返回

返回 (None|list), 当arch_name为空时返回None, 其它情况返回包中文件列表

返回类型

Optional[list]

mini_toolbox.archive.zip(arch_name: str, path_list: Union[list, str]) Optional[int][源代码]

用于压缩列表中指定的路径

警告

如果路径中存在软链接, 建议使用tar命令压缩

参数
  • arch_name (str) -- 压缩至指定文件路径

  • path_list (Union[list, str]) -- 压缩指定的路径, 支持文件路径或目录路径

返回

返回 (1|2|None), 当arch_name或file_list为空时返回1, 当path_list中存在非法路径时返回2, 其它情况返回None

返回类型

Optional[int]

mini_toolbox.config module

用于解析配置文件, 包含json、toml, 由于用法很简单, 仅做部分封装

mini_toolbox.config.json_dump(data: Any, file: str, indent: int = 4, encoding: str = 'utf-8') None[源代码]

将数据对象写入json文件

mini_toolbox.config.json_dumps(data: Any) str[源代码]

将数据对象转化为json字符串

mini_toolbox.config.json_load(file: str, encoding: str = 'utf-8') Any[源代码]

读取json文件至数据对象

mini_toolbox.config.json_loads(data: str) Any[源代码]

读取json字符串至数据对象

mini_toolbox.crypt module

class mini_toolbox.crypt.CryptTools(key: Optional[str] = None, priv: str = 'priv.pem')[源代码]

基类:object

用于字符串加解密, 支持DES/RSA

参数
  • key (Optional[str]) -- 自定义密钥, 用于DES认证

  • priv (str) -- 自定义私钥文件路径, 用于RSA认证, 默认为当前路径下: priv.pem

des_decrypt(s: str) str[源代码]

DES 解密

参数

s (str) -- 加密后字符串

返回

原始字符串

返回类型

str

des_encrypt(s: str) str[源代码]

DES 加密

参数

s (str) -- 原始字符串

返回

加密后字符串

返回类型

str

rsa_decrypt(s: str) str[源代码]

RSA 解密, 私钥读取自 priv 文件

参数

s (str) -- 加密后字符串

返回

原始字符串

返回类型

str

rsa_encrypt(s: str) str[源代码]

RSA 加密, 私钥保存至 priv 文件

参数

s (str) -- 原始字符串

返回

加密后字符串

返回类型

str

mini_toolbox.dingtalk module

用于钉钉群消息通知

class mini_toolbox.dingtalk.DingTalk(token: str, secret: Optional[str] = None, user_dict: Optional[dict] = None, ding_url: str = 'https://oapi.dingtalk.com/robot/send?access_token=')[源代码]

基类:object

用于钉钉群消息通知, 仅支持text模式, 详见 钉钉官方文档

参数
  • token (str) -- Webhook中的access_token

  • secret (Optional[str]) -- 加签模式的密钥, 可选, 默认为关键字模式, 实现详见 官方签名文档

  • user_dict (Optional[dict]) -- 导入 {'用户名':'手机号'} 键值对, 用于在at_users中直接选择用户名

  • ding_url (str) -- 钉钉官方api接口的url前缀(不含token)或者公司私用接口

send(content: Optional[str] = None, at_users: Union[list, str] = [], at_all: bool = False, sep: Optional[str] = None) dict[源代码]

发送钉钉消息

参数
  • content (Optional[str]) -- 消息正文, 默认为 'None', 支持 \n\t 等扩展字符

  • at_users (Union[list, str]) -- 用于@指定人员, 填写手机号或user_dict中的用户名, str会自动 split(sep) 为列表

  • at_all (bool) -- 是否@所有人, 默认为False

  • sep (Optional[str]) -- @指定人员列表分隔符, 默认为空格

返回

返回api的响应体信息, 如: {'errcode': 0, 'errmsg': 'ok'}

返回类型

dict

mini_toolbox.extra module

扩展工具集, 统一存放存在内部依赖的工具

mini_toolbox.extra.catch_exception(func=None, logger: logging.Logger = <Logger mini_toolbox (WARNING)>, exit_code: typing.Optional[int] = None) Any[源代码]

异常捕获装饰器

mini_toolbox.extra.gen_deps_seq(src_deps: list) Tuple[List[str], bool][源代码]

基于模块依赖关系, 生成依赖顺序和环状依赖标识

参数

src_deps (list) -- 依赖关系列表, '模块A,依赖B,依赖C', 示例: ['A,B,C', 'B,D', 'C', 'E,B']

返回

(依赖顺序, 环状依赖标识), 示例: (['C', 'B', 'A', 'E'], False)

返回类型

Tuple[List[str], bool]

mini_toolbox.extra.make_patch(old: str, new: str, patch: str) None[源代码]

用于制作补丁, old/new/patch都表示文件夹路径, 其中old/new必须真实存在

mini_toolbox.extra.update_json(file: str, data: Optional[Union[dict, mini_toolbox.utils._Dict2Object]] = None) mini_toolbox.utils._Dict2Object[源代码]

用于读取/新增/更新json数据文件, 并返回 _Dict2Object 数据对象

mini_toolbox.ftp module

用于FTP相关操作

class mini_toolbox.ftp.FtpTools(host: str, port: int = 0, user: str = '', passwd: str = '', level: int = 0)[源代码]

基类:object

用于FTP相关操作

支持文件/目录的上传和下载, 由于存在安全风险, 不支持删除, 仅支持重写

示例

FTP download / upload 语法示例:

copy /haha/hehe  .        # hehe   拷贝为 ./hehe       # 后为. 则后补/
copy /haha/hehe  ./       # hehe   拷贝为 ./hehe
copy /haha/hehe  ./haha   # hehe   拷贝为 ./haha
copy /haha/hehe  ./haha/  # hehe   拷贝为 ./haha/hehe
copy /haha/hehe/ ./       # hehe/* 拷贝为 ./*
copy /haha/hehe/ ./haha   # hehe/* 拷贝为 ./haha/*     # 前有/ 则后补/
copy /haha/hehe/ ./haha/  # hehe/* 拷贝为 ./haha/*
参数
  • host (str) -- 服务器地址

  • port (int) -- 服务器端口

  • user (str) -- 用户名

  • passwd (str) -- 用户密码

  • level (int) -- 日志等级, 0/1/2 分别表示 隐藏/少量/大量, 默认为0

check_file(path: str) Optional[bool][源代码]

判断ftp路径是否为文件, 返回 None/True/False, None表示不存在

download(src_path: str, dst_path: str, overwrite: bool = True) None[源代码]

从服务器路径下载至本地路径

参数
  • src_path (str) -- 源路径

  • dst_path (str) -- 目标路径

  • overwrite (bool) -- 如果相对路径存在 同名同类型 文件, 则重写, 默认为True

upload(src_path: str, dst_path: str, overwrite: bool = True) None[源代码]

从本地路径上传至服务器路径

参数
  • src_path (str) -- 源路径

  • dst_path (str) -- 目标路径

  • overwrite (bool) -- 如果相对路径存在 同名同类型 文件, 则重写, 默认为True

mini_toolbox.git module

用于gitlab相关操作

class mini_toolbox.git.GitTools(token: str, server: str, ssl_verify: bool = True)[源代码]

基类:object

用于gitlab相关操作, 仅支持token认证

备注

  1. 官方文档: python-gitlab

参数
  • token (str) -- private_token, 请使用用户私有token

  • server (str) -- git服务器地址

  • ssl_verify (bool) -- 是否启用SSL认证, 默认为True, 认证失败是建议置为False

LEVELS = {'developer': 30, 'maintainer': 40, 'reporter': 20}
check_branch(git_url: str, branch: str) Any[源代码]

校验branch是否存在, 返回branch对象/None

check_project(git_url: str) Any[源代码]

校验git_url是否存在, 返回project对象/None

check_ref(git_url: str, ref: str) Any[源代码]

校验ref是否存在, 查询全部<branch/tag/commit>, 返回commit对象/None

check_tag(git_url: str, tag_name: str) Any[源代码]

校验tag是否存在, 返回tag对象/None

create_branch(git_url: str, branch: str, ref: str, force: bool = False) Any[源代码]

创建分支

参数
  • git_url (str) -- git仓库的url地址

  • branch (str) -- 新分支名称

  • ref (str) -- 基于的分支名/标签名/commit

  • force (bool) -- 是否强制重建

create_tag(git_url: str, tag_name: str, ref: str, force: bool = False, msg: Optional[str] = None) Any[源代码]

创建标签

参数
  • git_url (str) -- git仓库的url地址

  • tag_name (str) -- 新标签名称

  • ref (str) -- 基于的分支名/标签名/commit

  • force (bool) -- 是否强制重建, 默认为不重建

  • msg (Optional[str]) -- 标签提交信息, 默认为空

delete_branch(git_url: str, branch: str) None[源代码]

删除分支

参数
  • git_url (str) -- git仓库的url地址

  • branch (str) -- 分支名称

delete_tag(git_url: str, tag_name: str) None[源代码]

删除标签

参数
  • git_url (str) -- git仓库的url地址

  • tag_name (str) -- 标签名称

get_refs(git_url: str, branch: bool = True, tag: bool = True) list[源代码]

获取git_url的全部分支和标签名称

update_auth(git_url: str, user_ids: str, access_level: str, expires_at: str) None[源代码]

添加用户权限, user_ids多个用英文逗号分隔

mini_toolbox.hash module

提供基本hash工具: md5/sha1/sha256

mini_toolbox.hash.md5(file_path: str) Optional[str][源代码]

计算文件的md5: 合法文件, 返回指定文件md5值; 非法文件, 返回 None

mini_toolbox.hash.sha1(file_path: str) Optional[str][源代码]

计算文件的sha1: 合法文件, 返回指定文件sha1值; 非法文件, 返回 None

mini_toolbox.hash.sha256(file_path: str) Optional[str][源代码]

计算文件的sha256: 合法文件, 返回指定文件sha256值; 非法文件, 返回 None

mini_toolbox.jenkins module

class mini_toolbox.jenkins.JenkinsTools(user: str, token: str, server: str)[源代码]

基类:object

用于jenkins相关操作, 支持token

参数
  • user (str) -- 用户名

  • token (str) -- 用户密码, 建议使用token

  • server (str) -- jenkins服务器地址

build_job(job_name: str, params: Optional[dict] = None, poll: int = 20, bg=False, ccu=True) tuple[源代码]

调用执行job, 返回任务执行的状态信息

参数
  • job_name (str) -- jenkins的job名称

  • params (Optional[dict]) -- 用于参数化构建, 键值与job变量取交集生效

  • poll (int) -- 任务状态轮询周期, 默认为20s

  • bg (bool) -- 后台执行,直接返回, 默认为False

  • ccu (bool) -- 执行并发构建, 默认为True

返回

bg=False, (结果状态, 日志URL, 日志数据); bg=True, (job名称, 任务ID)

返回类型

tuple

get_status(job_name: str, build_num: int, encoding: Optional[str] = None, errors: str = 'replace') tuple[源代码]

返回任务执行的状态信息

参数
  • job_name (str) -- jenkins的job名称

  • build_num (int) -- job的任务ID

  • encoding (Optional[str]) -- 输出编码, 默认根据chardet自动判断, 建议默认

  • errors (str) -- 遇到错误时处理模式, 默认为 replace, 可选: strict/ignore/replace

返回

(结果状态, 日志URL, 日志数据)

返回类型

tuple

has_job(job_name: str) bool[源代码]

返回任务执行的状态信息

参数

job_name (str) -- jenkins的job名称

返回

是否存在

返回类型

bool

mini_toolbox.jfrog module

class mini_toolbox.jfrog.JFrog(user: str, token: str, server: str)[源代码]

基类:object

用于操作JFrog仓库

参数
  • user (str) -- 用户名

  • token (str) -- 用户token

备注

实例方法入参说明: path 指任意路径; file 指文件路径; dir 指目录路径

check(path: str) Tuple[源代码]

查看远程路径是否存在

参数

path (str) -- 远程路径

返回

路径存在, 返回(True, stat信息); 不存在返回(False, 错误信息)

返回类型

Tuple[bool, Any]

copy(src_path: str, dst_path: str) Any[源代码]

拷贝路径, 支持文件和目录

delete(path: str) Any[源代码]

删除路径, 支持文件和目录

警告

请谨慎操作!

download(src_path: str, dst_dir: str) Any[源代码]

下载路径, 支持文件和目录

info(path: str) Any[源代码]

查看远程路径信息

list(path: str, list_folders: bool = True, recursive: bool = True) Any[源代码]

递归显示全部的路径

move(src_path: str, dst_path: str) Any[源代码]

移动路径, 支持文件和目录

stat(path: str) Any[源代码]

查看远程路径状态

upload(src_path: str, dst_path: str) Any[源代码]

上传路径, 支持文件和目录

警告

覆盖模式, 请谨慎操作! src_path 和 dst_path路径类型需要一致, 即: 同为文件类型或同为目录类型

mini_toolbox.logger module

class mini_toolbox.logger.Logger(logger_id: str = 'mini', file_path: str = 'all.log', to_file: bool = True, to_console: bool = True, color_file: bool = True, color_console: bool = True, show_process: bool = False, show_thread: bool = False, show_module: bool = False, level: str = 'DEBUG', log_size: float = 10.0, log_count: int = 10, encoding: str = 'utf-8')[源代码]

基类:object

标准化日志工具

警告

同一logger_id仅第一次初始化时生效, 后续重复初始化不再改变

logger

实例化后的日志工具

参数
  • logger_id (str) -- logger的名称, 默认为 mini

  • file_path (str) -- 日志文件名, 默认为 ./all.log

  • to_file (bool) -- 是否写入文件, 默认为True

  • to_console (bool) -- 是否输出至控制台, 默认为True

  • color_file (bool) -- 文件输出为彩色, 默认为True

  • color_console (bool) -- 控制台输出为彩色, 默认为True

  • show_process (bool) -- 日志输出显示进程字段, 默认为False

  • show_thread (bool) -- 日志输出显示线程字段, 默认为False

  • show_module (bool) -- 日志输出显示模块字段, 默认为False

  • level (str) -- 日志显示等级, 默认为 DEBUG, 可选项 ('FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'SUCCESS')

  • log_size (float) -- 单个日志文件大小(MB), 默认为10MB

  • log_count (int) -- 日志备份数量, 默认为10个

  • encoding (str) -- 写入文件的编码, 默认为'utf-8'

示例

>>> logger = Logger().logger
>>> logger.info('this is info message.')

mini_toolbox.mail module

用于发送邮件通知

class mini_toolbox.mail.Mail(host: str, suffix: str, sender: str, sender_desc: str, encode: str = 'utf-8', port: int = 25, ssl: bool = False, level: int = 0, username: Optional[str] = None, password: Optional[str] = None)[源代码]

基类:object

用于发送邮件通知

备注

  1. linux如果使用localhost, 可以使用postfix服务

  2. 官方文档: smptlib, module-email, email-examples

参数
  • host (str) -- 邮件服务器地址

  • suffix (str) -- 邮箱地址后缀, 如果邮箱地址中没有@符号, 则添加此后缀

  • sender (str) -- 发件人地址, 可简写为邮箱地址前缀

  • sender_desc (str) -- 发件人地址显示的用户名

  • encode (str) -- 编码类型, 暂未使用

  • port (int) -- 邮箱服务器端口, 默认为25, SSL端口一般为465

  • ssl (str) -- 是否开启SSL认证

  • level (int) -- 日志等级, 0/1/2 分别表示 隐藏/少量/大量, 默认为0

  • username (str) -- 认证登陆用户, 默认为空, 一般为发件人地址

  • password (str) -- 认证登陆密码, 默认为空

add_attachment(path_list: Union[str, list], ctype: Optional[str] = None, sep: Optional[str] = None) None[源代码]

添加邮件附件

参数
  • path_list (Union[str, list]) -- 附件路径列表, str会自动 split(sep) 为列表

  • ctype (Optional[str]) -- 文件类型, 默认为自动检测, 建议默认, 示例: image/png, 详见 mimetypes

  • sep (Optional[str]) -- 附件路径列表分隔符, 默认为空格

add_content(content: str, subtype: str = 'plain') None[源代码]

添加邮件正文 - 普通模式, 与关联模式互斥

参数
  • content (str) -- 正文内容

  • subtype (str) -- 正文编码, 支持 plain/html 格式, 默认为plain(纯文本)

添加邮件正文 - 关联模式, 与普通模式互斥, 支持邮件正文中显示图片

警告

  • 不支持手动指定多种data类型, 如果需要, 请保存为文件后自动检测

  • 如果is_path为False, 则需要手动指定ctype, 如: 'image/png'

参数
  • content (str) -- 正文内容, 正文编码只支持html

  • relate_dict (dict) -- 正文html中format()时需要关联的键值对, {'html中变量': '文件路径或data'}

  • is_path (bool) -- relate_dict的键值是否为文件路径, 默认为True, 建议使用文件路径

  • ctype (Optional[str]) -- 文件类型, 默认为自动检测, 建议默认

send_mail(subject: str, receivers: Union[str, list], cc_receivers: Union[str, list] = [], sep: Optional[str] = None) None[源代码]

发送邮件

参数
  • subject (str) -- 邮件主题

  • receivers (Union[str, list]) -- 收件人地址列表, str会自动 split(sep) 为列表, 可简写为邮箱地址前缀

  • cc_receivers (Union[str, list]) -- 抄送人地址列表, str会自动 split(sep) 为列表, 可简写为邮箱地址前缀, 默认为空

  • sep (Optional[str]) -- 收件人地址列表分隔符, 默认为空格

mini_toolbox.mysql module

class mini_toolbox.mysql.MySQL(host: str, port: int = 3306, user: str = '', passwd: str = '', database: str = '')[源代码]

基类:object

用于mysql数据库相关操作

参数
  • host (str) -- 服务器地址

  • port (int) -- 服务器端口

  • user (str) -- 用户名

  • passwd (str) -- 用户密码

  • database (str) -- 数据库名

commit_data(sql: str, data: Optional[Union[list, tuple, dict]] = None) Any[源代码]

执行sql语句, 并提交

参数
  • sql (str) -- 待执行的sql语句

  • data (Union[list, tuple, dict, None]) -- 替换sql语句中的变量, , 默认为空, (list|tuple) 可以替换 %s, dict 可以替换 %(name)

search_data(sql: str, data: Optional[Union[list, tuple, dict]] = None) Any[源代码]

执行sql查询语句, 返回查询结果

参数
  • sql (str) -- 待执行的sql语句

  • data (Union[list, tuple, dict, None]) -- 替换sql语句中的变量, , 默认为空, (list|tuple) 可以替换 %s, dict 可以替换 %(name)

mini_toolbox.path module

文件、路径处理相关工具

mini_toolbox.path.copy_file(src: str, dst: str, force: bool = True) None[源代码]

拷贝单文件路径, 源目路径类型需要一致, 仅支持处理三种文件类型: dir/file/link

mini_toolbox.path.edit_file(path: str, sub_info: list, encoding: str = 'utf-8') None[源代码]

按规则修改文本行

使用 re.serarch 搜索行关键字, 使用 re.sub 替换, sub_info格式: [line_keyword, sub_from, sub_to]

mini_toolbox.path.file_time(path: str, time_format: str = '%Y%m%d%H%M%S') str[源代码]

获取文件的最后修改时间戳

mini_toolbox.path.gen_path(path: str, only_file: bool = False, base_dir: str = '.') list[源代码]

按序递归生成有序且唯一的子路径列表

参数
  • path (str) -- 待分析的路径

  • only_file (bool) -- 仅返回文件路径, 默认False

  • base_dir (str) -- 基准路径, 优先切换至该路径, 默认 .

返回

返回全部的子路径列表

返回类型

list

mini_toolbox.path.get_eol(path: str, encoding: str = 'utf-8') str[源代码]

获取文本文件的换行符, 默认为 `` ``

mini_toolbox.path.merge_file(src: str, dst: str, force: bool = True)[源代码]

合并源目路径, 源目路径类型需要一致, 仅支持处理三种文件类型: dir/file/link

mini_toolbox.path.mkdirs(path: str, is_file: bool = False, remake: bool = False) str[源代码]

递归创建文件夹, 并返回目录路径

参数
  • path (str) -- 路径

  • is_file (bool) -- 是否为文件路径, 默认为False,

  • remake (bool) -- 是否重建目录, 默认False

返回

目录路径

返回类型

str

mini_toolbox.path.move_file(src: str, dst: str, force: bool = True) None[源代码]

移动单文件路径, 源目路径类型需要一致, 仅支持处理三种文件类型: dir/file/link

mini_toolbox.path.path_join(path: str, *args: str, sep: str = '/') str[源代码]

合并路径, 原版'/'开头路径前面的参数全部丢弃改为不丢弃

mini_toolbox.path.path_type(path: str) Optional[str][源代码]

获取路径类型, 返回: 'link'/'file'/'dir'/None

mini_toolbox.path.pushd(new_dir: str) None[源代码]

用于pushd指定目录, 通过with语句调用, with结束后隐式popd

mini_toolbox.path.rm_file(path: str) None[源代码]

删除文件路径, 仅支持处理三种文件类型: dir/file/link

警告

递归删除很危险, 请慎重

mini_toolbox.path.search_file(path: str, regex: str) list[源代码]

递归搜索路径中正则匹配的文件名并返回搜索结果相对路径列表

参数
  • path (str) -- 待搜索路径

  • regex (str) -- 正则表达式, 通过 re.search 搜索

返回

返回搜索结果列表

返回类型

list

mini_toolbox.path.split_path(path: str) Tuple[str, str][源代码]

拆分路径, 返回目录和文件名

mini_toolbox.path.url_join(path: str, *args: str) str[源代码]

合并url路径

mini_toolbox.pip_list module

备注

提供命令行工具 pip_list, 用于格式化显示pip库安装日期, 使用 -h 查看命令行帮助

mini_toolbox.pip_list.gen_pip_list() Tuple[List[str], List[int]][源代码]

用于查找并返回pip库信息, 包含: 库名/版本/安装时间

返回

data(List[str])为所有pip库的信息, 结构为 [库名, 版本, 安装时间], size(List[int])为各字段所有值的最大长度, 用于后续格式化输出

返回类型

Tuple[List[str], List[int]]

mini_toolbox.recoding module

备注

提供命令行工具 file_recoding, 用于转换文件编码, 使用 -h 查看命令行帮助

mini_toolbox.recoding.file_recoding(file_path: str, src_encoding: str, dst_encoding: str, errors: str = 'ignore') str[源代码]

将文件转化从原编码转化为指定编码

参数
  • file_path (str) -- 文件路径

  • src_encoding (str) -- 文件当前编码

  • dst_encoding (str) -- 目标转换编码

  • errors (str) -- 遇到错误时处理模式, 默认为 ignore, 可选: strict/ignore/replace

返回

解码后的文档内容

返回类型

str

mini_toolbox.ssh module

用于ssh/sftp相关操作

class mini_toolbox.ssh.SshTools(host: str, port: int = 22, user: Optional[str] = None, passwd: Optional[str] = None, pkey_file: Optional[str] = None)[源代码]

基类:object

用于ssh/sftp相关操作, 支持密码和密钥登陆

备注

官方文档: ssh, sftp

参数
  • host (str) -- 服务器地址

  • port (int) -- 端口地址

  • user (Optional[str]) -- 用户名, 默认为当前用户名

  • passwd (Optional[str]) -- 密码, 优先级低于pkey_file

  • pkey_file (Optional[str]) -- 指定私钥路径, 默认为.ssh/id_rsa

download(src_file: str, dst_file: str) Any[源代码]

下载文件, 仅支持文件路径

exec(cmd: str, input: Optional[str] = None, live=False, encoding='utf-8', errors: str = 'replace') Tuple[int, str, str][源代码]

执行shell指令, 不建议执行复杂指令

参数
  • cmd (str) -- 待执行指令, 多条命令用 ';' 分隔

  • input (Optional[str]) -- 指令执行时交互输入, 如 'keyword\n', 不建议使用

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为None

  • encoding (str) -- 目标服务器输出的编码格式, 默认为 'utf-8'

  • errors (str) -- 遇到错误时处理模式, 默认为 replace, 可选: strict/ignore/replace

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

upload(src_file: str, dst_file: str) Any[源代码]

上传文件, 仅支持文件路径

mini_toolbox.svn module

SVN常用指令封装

警告

出于安全考虑, 不支持密码输入

mini_toolbox.svn.svn_checkout(svn_url: str, dst_dir: str, rev: Optional[Union[int, str]] = None, params: Optional[str] = None, live: bool = False) Tuple[int, str, str][源代码]

检出代码

参数
  • svn_url (str) -- svn_url路径

  • dst_path (str) -- 本地目的路径

  • rev (Union[int, str, None]) -- 指定配置库提交版本, 默认为最新版本

  • params (Optional[str]) -- 指定额外参数, 默认为空

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为空

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

mini_toolbox.svn.svn_clean(local_path: Optional[str] = None, live: bool = False) Tuple[int, str, str][源代码]

用于清理工作目录, 返回执行结果

参数
  • local_path (Optional[str]) -- 仅支持svn本地路径, 默认为当前路径

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为空

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

mini_toolbox.svn.svn_commit(local_path: str, msg: str, live: bool = False) Tuple[int, str, str][源代码]

提交代码

参数
  • local_path (str) -- 仅支持svn本地路径

  • msg (str) -- 提交日志信息, 必填

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为空

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

mini_toolbox.svn.svn_copy(src_path: str, dst_path: str, msg: str, rev: Optional[Union[int, str]] = None, live: bool = False) Tuple[int, str, str][源代码]

复制svn路径, 返回指令执行信息

参数
  • src_path (str) -- svn路径, 支持本地路径和url

  • dst_path (str) -- svn路径, 支持本地路径和url

  • msg (str) -- 日志信息, url路径时必填, 默认为空

  • rev (Union[int, str, None]) -- 指定配置库提交版本, 默认为最新版本

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为空

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

mini_toolbox.svn.svn_delete(svn_path: str, msg: Optional[str] = None, force: bool = True, live: bool = False) Tuple[int, str, str][源代码]

删除svn路径, 返回delete指令执行信息

参数
  • svn_path (str) -- svn路径, 支持本地路径和url

  • msg (Optional[str]) -- 日志信息, url路径时必填, 默认为空

  • force (bool) -- 本地存在修改时是否删除, 默认为True

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为空

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

mini_toolbox.svn.svn_export(svn_url: str, dst_dir: str, rev: Optional[Union[int, str]] = None, params: Optional[str] = None, live: bool = False) Tuple[int, str, str][源代码]

检出纯净代码副本, 不带.svn

参数
  • svn_url (str) -- svn_url路径

  • dst_path (str) -- 本地目的路径

  • rev (Union[int, str, None]) -- 指定配置库提交版本, 默认为最新版本

  • params (Optional[str]) -- 指定额外参数, 默认为空

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为空

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

mini_toolbox.svn.svn_info(svn_path: str, rev: Optional[Union[int, str]] = None, params: Optional[str] = None, live: bool = False) Tuple[int, str, str][源代码]

返回info指令执行信息

参数
  • svn_path -- (str) svn路径, 支持本地路径和url

  • rev -- (Union[int, str, None]) 指定配置库提交版本, 默认为最新版本

  • params -- (Optional[str]) 指定额外参数, 默认为空

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为空

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

mini_toolbox.svn.svn_info_dict(svn_path: str, rev: Optional[Union[int, str]] = None) Any[源代码]

返回字典化的info信息

参数
  • svn_path -- (str) svn路径, 支持本地路径和url

  • rev -- (Union[int, str, None]) 指定配置库提交版本, 默认为最新版本

返回

返回常用键值对, 包括: path/rev/kind/url/root/last_rev/last_author/last_date

返回类型

dict

引发

Tuple[int, str, str] -- 执行结果(状态码, 标准输出, 错误输出)

mini_toolbox.svn.svn_list(svn_path: str, params: str = '-vR', rev: Optional[Union[int, str]] = None, live: bool = False) Tuple[int, str, str][源代码]

返回list指令执行信息

参数
  • svn_path -- (str) svn路径, 支持本地路径和url

  • params -- (str) 指定额外参数, 默认为空

  • rev -- (Union[int, str, None]) 指定配置库提交版本, 默认为最新版本

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为空

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

mini_toolbox.svn.svn_log(svn_path: str, num: Optional[Union[int, str]] = None, rev: Optional[Union[int, str]] = None, params: Optional[str] = None, live: bool = False) Tuple[int, str, str][源代码]

返回log指令执行信息

参数
  • svn_path -- (str) svn路径, 支持本地路径和url

  • num -- (Union[int, str, None]) 指定查询的日志数量, 默认为全部

  • rev -- (Union[int, str, None]) 指定配置库提交版本, 默认为最新版本

  • params -- (Optional[str]) 指定额外参数, 默认为空

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为空

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

mini_toolbox.svn.svn_log_list(svn_path: str, num: Optional[Union[int, str]] = None, rev: Optional[Union[int, str]] = None) Any[源代码]

返回列表化的log信息

参数
  • svn_path -- (str) svn路径, 支持本地路径和url

  • num -- (Union[int, str, None]) 指定查询的日志数量, 默认为全部

  • rev -- (Union[int, str, None]) 指定配置库提交版本, 默认为最新版本

返回

返回列表化的常用键值对, 包括: rev/author/date/msg

返回类型

List[dict]

引发

Tuple[int, str, str] -- 执行结果(状态码, 标准输出, 错误输出)

mini_toolbox.svn.svn_update(local_path: Optional[str] = None, rev: Optional[Union[int, str]] = None, live: bool = False) Tuple[int, str, str][源代码]

用于更新工作目录, 返回执行结果, 可以指定配置库提交版本

参数
  • local_path (Optional[str]) -- 仅支持svn本地路径, 默认为当前路径

  • rev (Union[int, str, None]) -- 指定配置库提交版本, 默认为最新版本

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为空

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

mini_toolbox.utils module

实用系统工具

mini_toolbox.utils.chunk_str(src: str, size: int, sep: str = ',') list[源代码]

按指定大小拆分指定分隔符的字符串

参数
  • src (str) -- 待拆分的字符串

  • size (int) -- 子字符串大小

  • sep (str) -- 分隔符, 默认 ,

返回

返回拆分后的字符串列表

返回类型

list

mini_toolbox.utils.comp_ver(ver_a: str, ver_b: str, flag: str = '<') bool[源代码]

用于比较标准数字版本号, 版本号可以以 Vv 开头, . 分隔, 不支持存在其它字母

mini_toolbox.utils.dict2obj(data: Union[dict, mini_toolbox.utils._Dict2Object]) mini_toolbox.utils._Dict2Object[源代码]

将字典转化为 _Dict2Object 数据对象

mini_toolbox.utils.dict_sort(data: dict, reverse: bool = False) dict[源代码]

返回按键值排序的字典

mini_toolbox.utils.exec_cmd(cmd: Union[str, list], shell: bool = True, live: bool = False, input: Optional[str] = None, timeout: Optional[int] = None, encoding: Optional[str] = None, errors: str = 'strict') Tuple[int, str, str][源代码]

调用系统指令, 返回指令输出, 不建议执行复杂指令

参数
  • cmd (Union[str, list]) -- 待执行指令

  • shell (bool) -- 是否使用系统shell执行, 默认为True, 如果cmd为列表, 需要置为False

  • live (bool) -- 是否实时输出, 默认为False, 如果为True, 则返回值中标准输出和错误输出为None

  • input (Optional[str]) -- 指令执行时交互输入, 如 'keyword\n', 不建议使用

  • timeout (Optional[int]) -- 指令执行超时时间, 默认不限制, 建议使用

  • encoding (Optional[str]) -- 输出编码, 默认根据系统判断: win(gbk)/unix(utf-8), 建议默认

  • errors (str) -- 遇到错误时处理模式, 默认为 strict, 可选: strict/ignore/replace

返回

执行结果(状态码, 标准输出, 错误输出)

返回类型

Tuple[int, str, str]

引发

TimeoutExpired -- 超时情况抛出异常, 中断程序

mini_toolbox.utils.format_bool(s: str) bool[源代码]

将true/false字符串转化为bool类型

mini_toolbox.utils.format_none(v: Any, default: Optional[bool] = None) Any[源代码]

格式化空数据

mini_toolbox.utils.format_vars(data: str, var_dict: dict) str[源代码]

用于格式化str模版, 替换{{VARIABLE}}

mini_toolbox.utils.get_obj_value(obj: object, path: str, default: Optional[Any] = None) Any[源代码]

获取对象path的值, 如果不存在, 返回默认值

mini_toolbox.utils.get_os() str[源代码]

获取操作系统类型

返回

操作系统类型 win|unix

返回类型

str

mini_toolbox.utils.is_none(param: Any) bool[源代码]

校验入参是否为空, 空返回True, 非空返回False

mini_toolbox.utils.judge_errs(*args) list[源代码]

用于条件判断, 返回msg列表: (condition, msg, Optional(break(bool)),

mini_toolbox.utils.set_or_not(obj: object, key: str, value: Any) None[源代码]

如果值不为None, 则更新对象的属性值

mini_toolbox.utils.split_str(s: str, sep: str = ',') list[源代码]

拆分字符串, 返回原序去重去空列表

mini_toolbox.utils.time_delta(days: int, time_str: str = '', time_format: str = '%Y-%m-%d') str[源代码]

用于简单的日期天数加减, 支持传入指定日期

mini_toolbox.utils.time_flag(time_format: str = '%Y-%m-%d %H:%M:%S') str[源代码]

获取当前时间的格式化输出

mini_toolbox.utils.update_obj(obj: mini_toolbox.utils._Dict2Object, data: Union[dict, mini_toolbox.utils._Dict2Object]) None[源代码]

更新 _Dict2Object 数据对象

mini_toolbox.xlsx module

用于xlsx相关操作

备注

  1. 由于操作excel时具有较强的特殊性, 此处不提供封装

  2. openpyxl库操作明确, 建议直接根据业务做特殊化处理

  3. 建议使用openpyxl操作最新的xlsx文件

  4. 老的xls文件建议使用xlrd==1.2.0读取

  5. 官方文档: openpyxl, 不同库差异1, 不同库差异2

mini_toolbox.xml module

class mini_toolbox.xml.XmlTools(file: str, pretty: bool = False)[源代码]

基类:object

用于XML相关操作

参数
  • file (str) -- xml文件路径

  • pretty (bool) -- 是否格式化保存, 默认为原始格式

备注

官方文档: Element, ElementTree, xpath, findall

示例

lxml.etree 语法示例:

# 节点间位置关系约定: 父节点, 子节点, 上节点(同级), 下节点(同级)

node.findall(xpath)      # 搜索 # 查找全部匹配子节点, 返回列表
node.find(xpath)         # 搜索 # 查找首个匹配子节点, 返回节点

node.iter()              # 遍历 # 递归遍历子节点
node.itertext()          # 遍历 # 递归遍历子节点文本
node.iterchildren()      # 遍历 # 遍历子节点

node.getparent()         # 获取 # 获取父节点
node.getprevious()       # 获取 # 获取上节点
node.getnext()           # 获取 # 获取下节点
root.makeelement(name)   # 获取 # 创建节点

node.append(_node)       # 增删 # 新增子节点
node.addprevious(_node)  # 增删 # 新增上节点
node.addnext(_node)      # 增删 # 新增下节点
node.remove(_node)       # 增删 # 删除节点

node.tag                 # 编辑 # 节点标签
node.text                # 编辑 # 节点文本
node.attrib              # 编辑 # 节点属性
node.get(key)            # 编辑 # 节点属性获取
node.set(key, value)     # 编辑 # 节点属性增改

node.findall(xpath) 简化语法示例:

.                        # 当前节点
..                       # 父节点
*                        # 下级全部子节点
//                       # 递归全部子节点

[@key]                   # 节点存在指定属性
[@key='value']           # 节点存在指定键值对
[tag]                    # 子节点存在指定标签
[tag='text']             # 子节点存在指定标签文本对
addchild(base: lxml.etree._Element, nodes: Union[lxml.etree._Element, List[lxml.etree._Element]], reverse: bool = False) lxml.etree._Element[源代码]

新增子节点, 支持同时添加多个, 返回base节点

addnext(base: lxml.etree._Element, nodes: Union[lxml.etree._Element, List[lxml.etree._Element]], reverse: bool = False) lxml.etree._Element[源代码]

新增下节点, 支持同时添加多个, 返回base节点

addprev(base: lxml.etree._Element, nodes: Union[lxml.etree._Element, List[lxml.etree._Element]], reverse: bool = False) lxml.etree._Element[源代码]

新增上节点, 支持同时添加多个, 返回base节点

find(xpath: str) Optional[lxml.etree._Element][源代码]

查找首个匹配子节点, 返回节点

findall(xpath: str) List[lxml.etree._Element][源代码]

查找全部匹配子节点, 返回节点列表

getattr(node: lxml.etree._Element, key: str) Optional[str][源代码]

节点属性获取

getnext(node: lxml.etree._Element) Optional[lxml.etree._Element][源代码]

获取下节点

getparent(node: lxml.etree._Element) Optional[lxml.etree._Element][源代码]

获取父节点

getprev(node: lxml.etree._Element) Optional[lxml.etree._Element][源代码]

获取上节点

gettag(node: lxml.etree._Element) Optional[str][源代码]

节点标签获取

gettext(node: lxml.etree._Element) Optional[str][源代码]

节点文本获取

makenode(tag: str, text: Optional[str] = None, attrib: Optional[dict] = None, namespace: Optional[str] = None) lxml.etree._Element[源代码]

创建节点

参数
  • tag (str) -- 节点标签

  • text (str) -- 节点文本

  • attrib (dict) -- 节点属性

  • namespace (Optional[str]) -- 节点命名空间, 默认为None, 自动处理

makenote(text: str, space: str = ' ') lxml.etree._Comment[源代码]

创建注释, 默认文本前后添加一个空格

remove(node: lxml.etree._Element) None[源代码]

删除节点

save(as_file: Optional[str] = None, encoding: str = 'utf-8', indent: str = '    ') None[源代码]

保存或另存为文件

参数
  • as_file (str) -- 另存为文件, 默认为更新原始文件

  • encoding (str) -- 文件编码, 默认为utf-8

  • indent (str) -- 格式化保存时缩进, 默认为4个空白字符

setattr(node: lxml.etree._Element, attrib: Optional[dict] = None) None[源代码]

节点属性增改

settext(node: lxml.etree._Element, text: Optional[str] = None) None[源代码]

节点文本修改