Python 中无限量的命令行参数

问题描述 投票:0回答:3

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

Calculator.py 1 2 44 6 -add

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

python argparse
3个回答
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

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


0
投票

导入argparse

def opera_numbers(数字, 操作): 返回操作(*数字)

定义主函数(): parser = argparse.ArgumentParser(description="简单计算器脚本") parser.add_argument('numbers', type=int, nargs='+', help='要操作的数字') parser.add_argument('-operation', Choices=['add', 'subtract', 'multiply', 'divide'], required=True, help='要执行的操作')

args = parser.parse_args()

operations = {
    'add': sum,
    'subtract': lambda x: x[0] - sum(x[1:]),
    'multiply': lambda x: eval('*'.join(map(str, x))),
    'divide': lambda x: eval('/'.join(map(str, x)))
}

result = operate_numbers(args.numbers, operations[args.operation])
print("Result:", result)

if name == "main": 主要()

© www.soinside.com 2019 - 2024. All rights reserved.