在命令行

时间:2018-06-06 07:33:12

标签: python

我正在构建几个直方图,我想在命令行中传递bins参数。但是,有时候这些垃圾箱的间隔可能不均匀,所以我宁愿直接将numpy函数传递给命令,例如:

python test.py arr=np.arange(0,10,2)

或其他一些numpy数组或矩阵。我的代码可以读取=符号后发生的情况,所以在这种情况下我有类似

的内容

kwargs['arr'] = 'np.arange(0,10,2)'

以便将其作为字符串读取。我已经检查了Can I pass a matrix as command line input in python with numpy?,但认为一切都是np.array;我想要的是它可以是np.arange,或只是range,甚至是np.array。所以如果可能的话,我更愿意让字符串按原样运行。我想避免类似

if 'np.arange' in kwargs['arr']:
    # some string manipulations here
    arr = np.arange(effective_str)
elif 'range' in kwargs['arr']:
    # and so on

有这样的方法吗?

1 个答案:

答案 0 :(得分:0)

所以我明白了。 eval可以解决问题。

eval('np.arange(0,10,2)') = array([0,2,4,6,8])

我听说eval有一些错误,所以如果有任何问题,请告诉我。

编辑:

在命令行中,您必须将np.arange(...)放在引号中:

python test.py arr='np.arange(0,10,2)'

否则会出错。