Py学习  »  Python

如何让argparse显示一个带有两个名称的python脚本的帮助页?

Robert Spencer • 5 年前 • 1561 次点击  

我当前工作的python脚本使用getopts,因为它是对使用Getopt::Long的perl脚本的重写。我想迁移到argparse,但是失败了,因为这些选项不能很好地适应argparse的工作方式。

然后我有了一个聪明的主意?],如果脚本有两个名称,例如:foo ssh&foo rsync

和symlink foo rsync to foo ssh(超过90%的脚本是foo ssh,rsync选项是一个不适合作为选项的附加组件),然后让脚本中的代码只处理它所运行的特定名称的选项。

我知道有次犯罪,但这看起来不像我要找的,而且得到的帮助输出比我刚开始的还要丑陋和混乱。

如果我尝试尽可能靠近argparse的getopts方式,我会得到:

usage: foo-ssh [-h] [--version] [--debug] [--forward-agent HOST:PORT]
                [--ipv4] [--knock HOST:PORT]
                [--libvirt-vnc HOST:PORT | --rsync]
                [USER@]HOST

从perl脚本帮助页:

Usage: foo-ssh <options> [USER@]HOST
       foo-ssh <options> --knock HOST:PORT [USER@]HOST
       foo-ssh <options> --libvirt-vnc HOST:PORT [USER@]HOST
       foo-ssh <options> --rsync -- <rsync options> [USER@]HOST:/path/file.name /tmp

我想要什么:

usage: foo-ssh [-h] [--version] [--debug] [--forward-agent HOST:PORT]
                [--ipv4] [--knock HOST:PORT] 
                [--libvirt-vnc HOST:PORT]
                [USER@]HOST
       foo-rsync [OPTION...] [USER@]HOST:SRC... [DEST]
       foo-rsync [OPTION...] SRC... [USER@]HOST:DEST

首先,我是不是在打一匹死马?如果我用相同数量或更多的代码替换已经工作的代码,那么整个练习就毫无意义。

第二,这可能吗?我在寻找什么来实现它?

脚注:Perl代码示例没有包括在内,因为它写得像河马,用自己的粪便标记自己的领地(即:到处都是),这是重写的原因之一。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56506
 
1561 次点击  
文章 [ 1 ]  |  最新文章 5 年前