我只是想为下面的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
请帮我解决这个问题。
答案 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
。