如何在python脚本命令行中正确处理一个选项的两个参数?

时间:2017-03-26 14:52:10

标签: python

我有一个" main.py" python脚本。我想在命令行中运行脚本时为一个选项处理两个参数。

例如,我将在终端中编写以下命令:

python main.py --interval 2 4

我希望能够在我的程序中为这个特定选项(--interval)获取这两个参数(2和4)。

" main.py"程序:

from sys import argv
from getopt import getopt, GetoptError


try:
    opts, args = getopt(argv[1:], "i:", ["interval="])
except GetoptError:
    print("usage: main.py --interval <start value> <end value>")
    exit(2)

for opt, arg in opts:
    if opt in ("-i", "--interval"):
        print("Start value: " + arg + ", end value: " + "?")

你可以在程序的最后一行看到,我在一个地方放了一个问号,我会得到第二个参数为&#34; - interval&#34;选项。

我想要的结果应该是:

Start value: 2, end value: 4

我知道这个简单的例子我可以使用argv [1]作为选项,argv [2]和argv [3]作为参数。但我想知道是否有可能用&#34; getopt&#34;库,如果是的话,是否是正确的方法。

1 个答案:

答案 0 :(得分:1)

标准库中的argparse模块有一个如下例子:

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

在您的示例中,您只需将nargs='+'参数替换为nargs=2即可。这样做会在我的终端上产生以下用法消息(传递-h标志以获得使用):

usage: tmp.py [-h] [--sum] N N