Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的命令行参数数量无限_Python_Argparse - Fatal编程技术网

Python中的命令行参数数量无限

Python中的命令行参数数量无限,python,argparse,Python,Argparse,我试图创建一个简单的计算器,它在命令行中接受参数。例如,在命令行: Calculator.py 1 2 44 6 -add 我会给我这些数字的总和。然而,用户如何输入无限多的参数呢。我知道您必须在函数中使用*args或类似的东西,我只是想知道如何使用argparse将其合并到命令行中。您不需要这样做,命令行参数存储在其中,它将为您提供一个命令行参数列表。你只需要把它们加起来 from sys import argv print sum(map(int, argv[1:])) # We ta

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

Calculator.py 1 2 44 6 -add

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

您不需要这样做,命令行参数存储在其中,它将为您提供一个命令行参数列表。你只需要把它们加起来

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-命令行参数存储为字符串,因此您需要
将它们映射为整数以求和

from sys import argv

print sum(map(int, argv[1:]))  # We take a slice from 1: because the 0th argument is the script name.
*args
用于向函数传递未知数量的值。考虑以下内容:

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

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

您不需要这样做,命令行参数存储在其中,它将为您提供一个命令行参数列表。你只需要把它们加起来

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-命令行参数存储为字符串,因此您需要
将它们映射为整数以求和

from sys import argv

print sum(map(int, argv[1:]))  # We take a slice from 1: because the 0th argument is the script name.
*args
用于向函数传递未知数量的值。考虑以下内容:

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

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



你能把代码粘贴到计算器上吗。py?什么告诉你arg的数量是有限的?传递的任何参数都存储在sys.argvCan中,您可以将代码粘贴到计算器中。py?什么告诉你arg的数量是有限的?传递的任何参数都存储在sys中。argvIsn这不是忽略了-add标志吗?您可以通过切片argv[1:-1],然后分别处理argv[-1]来获得-add标志吗?如果OP知道最后一个元素将是一个用于计算的函数,他可以相应地切片它并测试该函数。我向函数添加了关于未知参数的部分。您也可以使用
-add
,只需从
[1:-1]
中切片列表,并设置一个包含标志到函数映射的字典。然后,只需将
argv[1:-1]
作为列表传递给函数,并使用
sum(map(int,passedArg))
-xxx通常意味着参数可以出现在行的任何位置。(好吧,我在这里有点像个垃圾…)也许抓住它并重新打包args列表?这不是忽略了-add标志吗?你可以通过切片argv[1:-1]然后分别处理argv[-1]来获得-add标志吗?如果OP知道最后一个元素将是用于计算的函数,他可以相应地切片它并测试函数。我向函数添加了关于未知参数的部分。您也可以使用
-add
,只需从
[1:-1]
中切片列表,并设置一个包含标志到函数映射的字典。然后,只需将
argv[1:-1]
作为列表传递给函数,并使用
sum(map(int,passedArg))
-xxx通常意味着参数可以出现在行的任何位置。(好吧,我在这里有点像个废物……)也许拿着它重新打包Arg的名单?vik,谢谢。我还在弄清楚这个的格式。这是直接从文档中提出来的。来源请!(除非是另一条路…)维克,谢谢你。我还在弄清楚这个的格式。这是直接从文档中提出来的。来源请!(除非是相反的方式…)