semvec/pypi-packages huggingface dataset:
pz7z8 0.1.13
一些零碎的小工具集
Requires Python: >=3.5

# 前言

pz7z8是用python写的一些杂七杂八的小脚本。使用`pip install pz7z8`即可安装使用。

如果记不清楚这个包里有哪些东西，都叫什么名字，大约有什么功能，可以在安装后直接执行pz7z8察看帮助。可以根据提示找到这份文档。

# 各脚本说明

## chgver 修改版本号

当前处理流程如下：

* 执行 ./setup.py sdist
* 打开setup.py文件读
* 复制setup.py为setup.py.bak
* 搜索 version=x.y.z 这样的行，其中x,y,z都是数字
* 设置z=z+1，修改setup.py
* 执行twine upload dist/*x.y.z.tar.gz

## dfslow 找出速度比较慢的挂载盘

无参数。

读取/etc/mtab文件，逐一用df检查每一条，如果时间超过1秒，显示慢的这一行相关信息。

如果正常，则没有任何显示。

## dsync 双向的文件同步工具

执行时可以带一个参数指定配置文件，如果不指定，则使用当前目录下的dsync.conf

配置文件样例如下：

```
d1=/目录1
d2=/目录2
c1=gbk
c2=utf8
sp=|

f=文件1
f=文件2
f=文件3
f=文件4在目录1中名称|文件4在目录2中名称
```

以上配置内容不要为了美观等因素增加空格，会影响解析出的内容。

执行时会在d1，d2两个目录下依次检查文件，如果有不一样（md5值不等、只有一个目录有等）则复制日期新的到日期旧的目录。如果md5值不等但是文件修改时间相等则报警。

注意d1，d2在配置文件中可以有多行，后续检查以最后的d1,d2为准。

c1,c2设置编码，比如上面这个设置，就可以一个目录下放gbk的编码文件，另一个目录下放utf8的文件，比较的时候会考虑这个编码的因素，转换了之后进行比较。同步的时候也会做相应转换。c1，c2可以省略，省略的时候当utf8处理。如果2个都省略，则直接拷贝，不做转码。

sp是分隔符，不设置则默认为|。如果需要同步的文件在两个目录中文件名不同，则使用分隔符把两个文件名分开。同样要注意在文件名两边、分隔符两边不要留空格，除非文件名本身包含空格。

## filenum 统计目录下的文件数量

执行时可以带一个参数指定目录，如果不指定则使用当前目录。

递归统计此目录下的所有文件数量并输出。

注意输出顺序是按照搜索的顺序，看着会有些乱。可以使用以下语句进行排序并输出哪些目录下文件数量较多。

`filenum 目录 |sort -g|tail`

## finfo 记录文件（目录）的信息

`finfo 目录名 md文件名`

忽略目录名则使用当前目录。

忽略markdown文件名则使用目标目录下的finfo.md文件。

## md2pdf 把markdown文件编译成pdf

执行时带参数指定要转换的markdown文件名，可以指定多个

脚本会调用pandoc和xelatex把文件转为pdf，所以要安装好pandoc和xelate

为调整输出格式，使用了两个模板文件，一个是yaml的，一个是tex的。可以使用系统带的模板文件，也可以使用自定义的模板文件。要转换/data/abc.md时，模板文件使用顺序如下：（以tex举例,yaml顺序相同）

* /data/abc.md.tex
* /data/md2pdf.tex
* 软件包自带的md2pdf.tex，目录在md2pdf执行时会显示

模板文件如何修改请参考pandoc的相关文档。

yaml模板中可以有{filename}这样的替换，用来处理一些高级功能，如toc-title: {filename}指定标题显示文件名，目前支持的替换有：

* filename:文件名（不包含路径，不包含扩展名）
* createtime:生成pdf的时间，如2025-08-02 15:14:02
* createdate:生成pdf日期，如2025-08-02

## pz7z8 给出这个包的一些简单介绍

比如这个包有哪些内容

## smod 根据模板调整源代码

* 扫描 模板目录（默认是当前目录）下的模板文件 *.htm *.html
* 扫描 目标目录 (默认是web/static) 下的目标文件 *.htm *.html
* 如果目标文件中有 `<!-- updatehtm xxxx.htm start -->` 或者是 `<!-- updatehtm xxxx.htm end -->`  这样的行，则认为是需要用相应模板中的内容替换
* 替换后如果内容有变化，则更新文件，如果没有变化，则不更新文件

用来批量替换文件里的一些固定内容，比如引用的模块

## sshall 使用ssh跳转到预先设置好的目标机器

读入当前用户目录下的.sshall.json文件，这个文件基本格式如下：
```
[
    {
        "info": "服务器说明，会在右边显示，供选择服务器用",
        "name": "服务器名称，会显示在标题处",
        "class": "填写服务器的分类，会在左边显示所有的分类，选中分类后在右边显示这个分类中的所有服务器",
        "host": "服务器地址，可以使用域名，也可以直接使用ip地址",
        "port": "端口，一般设置为22"
    },
]
```

可以把自己要连接的ssh机器登记在这个配置文件里，执行sshall就可以分类显示这些机器，按动分类左边的数字快捷键可以切换分类，按动机器左边的字母快捷键可以跳转到相应的机器。