【发布时间】:2018-12-25 15:34:21
【问题描述】:
我想要一个带有一两个参数的选项,特别是时间戳和可选容差。
我知道我应该只使用 nargs='+' 并在我得到两个以上的值时出错,这就是我正在做的事情。
我也在使用metavar=('timestamp', 'tolerance'),所以可以命名这两个值。
但是,帮助消息仍然是这样的:usage: foo.py [-h] [-t timestamp [tolerance ...]]
这错误地暗示 -t 可以接受两个以上的参数。
我怎样才能让它只说[-t timestamp [tolerance]]?我的实际代码如下:
import argparse
import sys
parser = argparse.ArgumentParser()
parser.add_argument('-t', '--timestamp', nargs='+', metavar=('timestamp', 'tolerance'))
args = parser.parse_args()
if args.timestamp and len(args.timestamp) > 2:
sys.exit('Argument --timestamp takes one or two values')
【问题讨论】:
-
有什么理由不使用单独的
--timestamp和--tolerance参数吗? -
--tolerance是距离时间戳的分钟数,所以没有--timestamp是没有意义的。也更少冗长。 -
-
一个允许
nargs值范围的补丁是不久前提出的,bugs.python.org/issue11354,但从未投入生产。最好使用现有代码对“+”进行自己的测试,但正如您所注意到的,help并不漂亮。