用 Python 做了个个人命令行工具,管理日常脚本更轻松

从 argparse 到配置文件,踩过的坑一次讲清

Posted on 2026-02-21

我手里有不少小脚本:清理日志、同步文件、生成周报。以前分散在不同目录,时间一长就忘记参数怎么写。

最近我把它们收敛成一个 CLI 工具,统一入口后,使用和维护都轻松了很多。

最小可用结构

tools/
  cli.py
  commands/
    backup.py
    report.py
  config.toml

核心入口

import argparse

parser = argparse.ArgumentParser(prog='mytools')
sub = parser.add_subparsers(dest='cmd', required=True)
sub.add_parser('backup')
sub.add_parser('report')
args = parser.parse_args()

三个踩坑点

  • 参数名改动后没有兼容旧脚本,导致定时任务失败
  • 日志默认只打到控制台,排错时缺历史记录
  • 配置文件路径写死,跨机器同步时经常报错

现在的做法

我给每个子命令补了 --dry-run,并把日志统一写到 /var/log/mytools。另外把配置路径做成环境变量覆盖,迁移时只改一处。

这个工具还在持续迭代,但它已经成为我每天打开终端后最先使用的命令之一。