# py_tool **Repository Path**: nilongao/py_tool ## Basic Information - **Project Name**: py_tool - **Description**: No description available - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-10 - **Last Updated**: 2026-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数据处理工具 Python 桌面工具集合项目。当前版本提供 Excel 数据比较、离线激活和 exe/zip 打包能力。 ## 功能 - 离线激活:支持永久激活和按天数激活。 - 工具箱首页:左侧显示工具分类,右侧用紧凑列表显示当前分类下的功能。 - 通用菜单栏:提供工具箱首页、多级工具选择、刷新当前页面和关于软件。 - 版本与在线更新:在帮助菜单查看当前版本、检查并安装新版本。 - Excel 数据比较:选择旧文件、新文件、开始比较行数和比较列。 - 通用记忆文件:每个功能按功能 key 保存自己的缓存信息。 - Excel 工具内记忆:支持结果搜索、上次输入回填和最近比较历史。 - 新增数据预览:展示新 Excel 中比旧 Excel 多出的数据。 - 格式导出:导出新增数据,并尽量保持新 Excel 的表头、列宽、行高和单元格样式。 当前完整支持 `.xlsx`。CSV 入口后续再扩展,因为 CSV 本身不包含 Excel 样式。 ## 开发运行 ```powershell py -m venv .venv python.exe -m pip install --upgrade pip python.exe -m pip install -r requirements.txt python.exe -m app.main ``` 开发运行时,记忆文件保存到当前项目目录的 `memory.json`。 打包后运行时,记忆文件保存到 `DataTool.exe` 同目录的 `memory.json`。 ## 授权码生成 软件启动后会显示机器码。复制机器码后,用下面命令生成激活码。 永久激活: ```powershell .\scripts\generate_license.ps1 -MachineCode "<机器码>" -Permanent ``` 按天数激活: ```powershell .\scripts\generate_license.ps1 -MachineCode "<机器码>" -Days 365 ``` 也可以直接使用 Python 脚本生成激活码: ```powershell python.exe -m app.auth.license_generator --machine-code "53B071D40969F3CCDA4FAF6B66501D12" --permanent python.exe -m app.auth.license_generator --machine-code "53B071D40969F3CCDA4FAF6B66501D12" --days 365 ``` ## Excel 数据比较规则 1. 选择旧 Excel 文件。 2. 选择新 Excel 文件。 3. 输入开始比较行数,例如 `2` 表示第一行是表头,从第二行开始比较数据。 4. 输入比较列,例如 `A` 或 `A,C,D`。 5. 点击“开始比较”。 6. 确认结果后点击“导出结果”。 程序会用比较列的值组成唯一标识。新文件中存在、旧文件中不存在的唯一标识,会被判断为新增数据。 ## 打包 exe ```powershell .\scripts\build_exe.ps1 ``` 构建产物: ```text dist/DataTool/DataTool.exe ``` ## 打包压缩包 ```powershell .\scripts\build_zip.ps1 ``` 构建产物: ```text dist/DataTool-v1.0.0.zip ``` ## 在线更新 打包后,程序目录会包含 `update_config.json`。把其中的 `manifest_url` 改成你服务器上的更新清单地址,例如: ```json { "manifest_url": [ "https://github.com/<用户名>/<仓库名>/releases/latest/download/manifest.json", "https://example.com/datatool/manifest.json" ] } ``` `manifest_url` 可以是一个字符串,也可以是多个地址组成的数组。配置多个地址时,程序会按顺序尝试,前一个失败就自动尝试下一个。 服务器上的 `manifest.json` 示例: ```json { "version": "1.0.1", "download_url": "https://example.com/datatool/DataTool-v1.0.1.zip", "sha256": "", "notes": "更新说明" } ``` 用户在软件里点击 `帮助 -> 检查更新` 后,程序会下载新版 zip,校验后关闭当前程序,并自动替换程序目录后重新启动。 ## GitHub 自动发布 仓库已包含 GitHub Actions 工作流:`.github/workflows/release.yml`。 普通提交到 `main` 或 `master`: - 自动安装依赖 - 自动运行测试 - 自动编译检查 发布新版本时,先修改 `app/version.py` 里的 `APP_VERSION`,然后推送同版本 tag: ```powershell git tag v1.0.1 git push origin v1.0.1 ``` GitHub Actions 会自动打包 `DataTool-v1.0.1.zip`,并上传到 GitHub Release。 工作流也会自动生成并上传 `manifest.json`。发布后,可以把用户程序目录里的 `update_config.json` 配成: ```json { "manifest_url": [ "https://github.com/<用户名>/<仓库名>/releases/latest/download/manifest.json" ] } ``` ## 测试 ```powershell .\.venv\Scripts\python.exe -m pytest -v ```