3

在将 perl 脚本与主要 python 脚本集成时需要帮助。

我有一个名为 perl 的脚本:GetHostByVmname.pl

./GetHostByVmname.pl –server 10.0.1.191 –username Administrator –password P@ssword1 –vmname RHTest

我需要从我的 python 主脚本中调用上面的脚本。在下面尝试,但不起作用:

param = "--server 10.0.1.191 --username Administrator --password P@ssword1 --vmname RHTest"


pipe = subprocess.Popen(["perl", "./GetHostByVmname.pl", param ], stdout=subprocess.PIPE)
4

2 回答 2

5

您可以提供一个 shell 命令

Popen("./GetHostByVmname.pl –server 10.0.1.191 ...", ...)

或者一个数组,其中第一个元素是程序,其余的是 args。

Popen(["./GetHostByVmname.pl", "–server", "10.0.1.191", ... ], ...)

目前,您正在执行与以下 shell 命令等效的操作:

perl ./GetHostByVmname.pl '–server 10.0.1.191 ...'
于 2013-04-23T05:36:00.967 回答
2

我认为拆分字符串会更好

./GetHostByVmname.pl –server 10.0.1.191 –username Administrator –password P@ssword1 –vmname RHTest

到一个列表,然后用这个列表作为第一个参数调用 Popen。例子:

import shlex, subprocess
args_str = "./GetHostByVmname.pl –server 10.0.1.191 –username Administrator –password P@ssword1 –vmname RHTest"
args = shlex.split(args_str)
p = subprocess.Popen(args, stdout=subprocess.PIPE)
于 2013-04-23T05:41:56.153 回答