有没有一种方法可以将列表作为argparse中的参数之一传递

时间:2019-08-12 16:40:42

标签: 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 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']]

1 个答案:

答案 0 :(得分:3)

nargs可让您完成一些操作:

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

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