我花了几个小时试图弄清楚如何将多个参数传递给python脚本,该脚本应该由subprocess.Popen执行而没有任何运气.
脚本:
command = ['/usr/bin/python', '/tmp/script.py mcl=NULL mtp=data mnm=DS4INST \
mno=NULL mse=NULL mce=cll01']
result = subprocess.Popen(command, stdout = subprocess.PIPE, \
stderr = subprocess.PIPE)
out, err = result.communicate()
print out, err
我收到以下错误消息:
python: can't open file '/tmp/script.py mcl=NULL mtp=data mnm=DS4INST mno=NULL \
mse=NULL mce=cll01': [Errno 2] No such file or directory
但是,当我直接从shell执行脚本时
/usr/bin/python /tmp/script.py mcl=NULL mtp=data mnm=DS4INST mno=NULL \
mse=NULL mce=cll01
我收到所需的输出并且未生成错误消息.
请指教.
解决方法:
试试这个:
command = ['/usr/bin/python', '/tmp/script.py', 'mcl=NULL', 'mtp=data', 'mnm=DS4INST', 'mno=NULL' 'mse=NULL', 'mce=cll01']
在您的代码中,命令的第二个元素被视为一个单独的参数,并解释为:
/usr/bin/python "/tmp/script.py mcl=NULL mtp=data mnm=DS4INST mno=NULL mse=NULL mce=cll01"
所以就像一个带空格的长文件名.
您必须将参数拆分为命令列表的单独元素.
标签:python,parameter-passing,popen
来源: https://codeday.me/bug/20190530/1185085.html