argparse:store_true和int同时出现

时间:2013-11-08 11:29:39

标签: python argparse

我正在使用argparse作为cli参数。我想要一个参数-t来进行温度测试。我还想指定温度测量的周期。

我想:

python myscript.py -t每60秒执行一次测量,

python myscript.py -t 30每30秒执行一次测量,

python myscript.py不要进行温度测量。

现在我这样做:

parser.add_argument('-t', '--temperature',
                    help='performs temperature test (period in sec)',
                    type=int, default=60, metavar='PERIOD')

问题在于我无法区分python myscript.pypython myscript.py -t

希望能够同时执行action='store_true'type=int之类的操作。可能吗?还有其他办法吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

使用const参数:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
    '-t', '--temperature',
    help='performs temperature test (period in sec)',
    type=int,
    nargs='?',
    const=60,         # Default value if -t is supplied
    default=None,     # Default value if -t is not supplied
    metavar='PERIOD')

args = parser.parse_args()
print(args)

% test.py
Namespace(temperature=None)
% test.py -t
Namespace(temperature=60)
% test.py -t 30
Namespace(temperature=30)

答案 1 :(得分:0)

我之前没有使用过argparse。但最近我看到docopt https://github.com/docopt/docopt上的一个演示文稿让我感到震惊。

也许试一试?