如何在python脚本中将随机参数传递给另一个python程序?

时间:2016-06-09 11:28:09

标签: python bash python-2.7 python-3.x

我只是想为下面的python脚本传递随机参数。

代码:

import json,sys,os,subprocess

arg1 = 'Site1'
arg2 = "443"
arg3 = 'admin@example.com'
arg4 = 'example@123'
arg5 = '--output req.txt'
arg6 = '-h'

obj=json.load(sys.stdin)

for i in range(len(obj['data'])):
    print obj['data'][i]['value']
    subprocess.call(['./malopinfo.py', arg1, arg2, arg3, arg4, obj , arg5])

在上面的代码中,变量obj会随机变化,但除此之外,所有参数都是静态的。

错误:

root@prabhu:/home/teja/MalopInfo/version1/MalopInfo# ./crver1.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   116    0   116    0     0   5313      0 --:--:-- --:--:-- --:--:--  5523
11.945403842773683082
Traceback (most recent call last):
  File "qjson.py", line 15, in <module>
    subprocess.call(['./malopinfo.py', arg1, arg2, arg3, arg4, obj])
  File "/usr/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception

我正在尝试执行

python malopinfo.py Site1 443 admin@example.com example@123 11.945403842773683082 --output req.txt

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

在我看来,你将整个obj字典传递给命令。要获得所需的调用,请将参数列表中的obj['data'][i]['value']传递给subprocess.call。所以,你的脚本的最后一行应该是

    subprocess.call(['./malopinfo.py', arg1, arg2, arg3, arg4, obj['data'][i]['value'], arg5])

或者,您可以创建一个变量来包含每个循环迭代中的变量,无论什么工作。

答案 1 :(得分:1)

您正在直接传递一个对象。之前您需要将其转换为字符串,因为subprocess.call期望obj是一个字符串。获取其中一个obj属性的字符串值,例如您已经完成obj['data'][i]['value']并将其传递到subprocess.call