Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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 是否有方法将列表作为argparse中的参数之一传递_Python_Argparse - Fatal编程技术网

Python 是否有方法将列表作为argparse中的参数之一传递

Python 是否有方法将列表作为argparse中的参数之一传递,python,argparse,Python,Argparse,我正在写PySpark作业,我想为其传递几个参数。其中一个应该有字符串列表,也应该有一个列表。我搞不清楚如何将列表传递到参数列表 parser = argparse.ArgumentParser(description='My pyspark job arguments') parser.add_argument('--job', type=str, required=True, dest='job_name', help='The name of the spark job you want

我正在写PySpark作业,我想为其传递几个参数。其中一个应该有字符串列表,也应该有一个列表。我搞不清楚如何将列表传递到参数列表

parser = argparse.ArgumentParser(description='My pyspark job arguments')

parser.add_argument('--job', type=str, required=True, dest='job_name', help='The name of the spark job you want to run')
parser.add_argument('--res-path', type=str, required=True, dest='res_path',help='Path to the jobs resurces')
parser.add_argument('-l', '--list', action='append', required=True, help='List of list')

args = parser.parse_args()
在CLI中传递值时:

--list currency
--list RSD EUR
我希望--list的输出如下所示:


['currency'、['RSD'、['EUR']]
nargs
让您可以完成以下操作:

parser.add_argument('--list', action='append', nargs='+')

将产生
[['currency']、['RSD'、['EUR']]
。一个缺点是,不能在
--list
之后立即使用位置参数,因为它们将作为
--list
本身的参数使用。

请检查,当使用复杂的CLI结构时,此库非常有用发送选项
--
可用于分隔位置参数arguments@VPfB是的,但这也阻止了使用任何其他选项。您还可以指定另一个(有效)选项来停止
--list
使用更多参数(
--list a b c--foo…
)。它必须有效,否则
argparse
将引发预期的“unrecognized argument--foo”错误(因此这是允许位置参数的一种方法,但不是唯一的方法)