我正在创建一个使用与pacman
Arch Linux 相同风格的 python 脚本,总结如下:
prog <operation> [options] [targets]
- 操作的形式是 -X(连字符,大写字母),调用脚本时需要一个。
- 选项的形式是 -x(连字符,小写字母),并且对于不同的操作可能意味着不同的东西。
例如:
pacman -Syu
表示使用和选项执行sync
操作,使用新软件包升级整个系统。refresh
sysupgrade
pacman -Qu
表示使用选项执行query
操作upgrades
,列出所有过时的包。pacman -Ss <arg>
表示使用选项执行sync
操作,该search
选项期望另一个参数作为要在同步包中搜索的模式。
妙语:
我一直在研究 python 的argparse库,试图弄清楚如何实现它。到目前为止,我遇到了一些问题/设计问题:
argparse
只接受以连字符为前缀的参数作为可选参数。当绝对需要一个时,我所有的“操作”都会显示为可选参数。- 我可以让我的脚本有一个“位置”/必需的参数,这将是操作(我必须将操作切换为单词,比如
upgrade
oradd
),然后是可选参数。然而,这仍然不能解决相同选项符号工作不同的问题,也不会让我轻松列出--help
文本中所有支持的操作。
处理这个参数解析的最流畅的方法是什么?我不反对更改命令的用法,但正如我上面所说,据我所知,它似乎对我的情况没有帮助。
谢谢