【发布时间】:2015-02-20 18:52:18
【问题描述】:
我很难解析 subprocess.Popen 的参数。我正在尝试在我的 Unix 服务器上执行脚本。在 shell 提示符下运行时的脚本语法如下:
/usr/local/bin/script hostname = <hostname> -p LONGLIST。无论我如何尝试,脚本都没有在 subprocess.Popen 中运行
“=”前后的空格为必填项。
import subprocess
Out = subprocess.Popen(['/usr/local/bin/script', 'hostname = ', 'actual server name', '-p', 'LONGLIST'],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
上述方法不起作用。
当我使用 shell=False 时,我得到OSError: [Errno 8] Exec format error
【问题讨论】:
-
大胆猜测:试试
'hostname = actual server name'而不是'hostname = ', 'actual server name' -
根据你在提示符下运行它的方式,看起来
hostname是一个参数,=是一个单独的参数,这很奇怪。你确定=周围有空格吗? -
嗨布莱恩,是的,必须有空间。脚本接受 key=value 类型参数。
-
@user3477108 - 这很令人费解,你说必须有一个空格,然后给出一个没有空格的“key=value”示例。当然,由于您的命令行示例有一个空格,我们知道
key = value应该是Popen的 3 个参数,如 insti 所示。 -
谢谢。我在原始脚本周围写了一个小包装脚本,以忽略“=”周围的空间包装脚本运行良好。
标签: python subprocess