我正在编写PySpark作业,我想传递几个参数。其中一个应该有list字符串,也有一个list。我无法弄清楚如何将list传递给参数的list。

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本身的参数。