首页 > 解决方案 > 从bash将数组传递给python参数

问题描述

我有一些foo.py带有许多参数的 python 脚本。在我argparse import ArgumentParser用来解析它们的那个脚本里面。

我想从 bash 传递一个数组作为其中一个的值。我试过了:

python foo.py --arg1=1 --arrArg=[1,2] --arg3=x

当我在脚本中打印它们时,我得到:

arg1=1

arrArg=['1',',','2']

arg3=x

如何将数组作为 bash 中的数字传递?

标签: pythonbasharguments

解决方案


如果您自己使用脚本,并且只有您自己,那么您可以使用eval(). 但请注意,这不是一个非常安全的功能。当您不知道输入是什么时,永远不要使用它。

import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('--arr',
                help='Array of integers')

args = parser.parse_args()
data = eval(args.arr)
print(type(data))
print(data)

否则,使用nargs='+'argparse 的参数:

import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('--arr', nargs='+', type=int,
                    help='Array of integers')

args = parser.parse_args()
data = args.arr
print(type(data))
print(data)

并调用你的脚本python foo.py --arr 1 2 3 --bla blablabla


推荐阅读