我正在使用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.py
和python myscript.py -t
。
希望能够同时执行action='store_true'
和type=int
之类的操作。可能吗?还有其他办法吗?
谢谢!
答案 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上的一个演示文稿让我感到震惊。
也许试一试?