我只是想为下面的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
请帮我解决这个问题。
,您正在将整个obj
字典传递到命令中。要获取所需的调用,请将参数列表中的obj['data'][i]['value']
传递给subprocess.call
。因此,脚本的最后一行应该是
subprocess.call(['./malopinfo.py', arg1, arg2, arg3, arg4, obj['data'][i]['value'], arg5])
或者,您可以创建一个变量以在每次循环迭代中包含该变量,无论哪种方式都可以。
你直接传递一个对象。事先,您需要将其转换为字符串,因为subprocess.call
期望 obj 是一个字符串。获取其中一个 obj 属性的字符串值,就像您已经完成obj['data'][i]['value']
并将其传递到您的subprocess.call
中。