Python中无限量的命令行参数

时间:2013-07-23 14:35:52

标签: python argparse

我正在尝试创建一个简单的计算器,它在命令行接受参数。例如,在命令行:

Calculator.py 1 2 44 6 -add

会给我数字的总和。但是,用户如何输入无限量的参数。我知道你必须在函数中使用* args或类似的东西,我只是想知道如何使用argparse将它合并到命令行中。

2 个答案:

答案 0 :(得分:8)

您不需要,命令行参数存储在sys.argv中,它将为您提供命令行参数的列表。你只需要总结一下。

from sys import argv

print sum(map(int, argv[1:]))  # We take a slice from 1: because the 0th argument is the script name.

只是做

python testScript.py 1 2 3
6

P.S - 命令行参数存储为字符串,因此您需要将map个整数存储为整数。

当您需要将未知数量的值传递给函数时,将使用

*args。请考虑以下内容 -

>>> def testFunc(*args):
        return sum(args)

>>> testFunc(1, 2, 3, 4, 5, 6)
21

答案 1 :(得分:5)

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)

https://docs.python.org/3/library/argparse.html