使用python中的选项调用perl脚本

时间:2014-11-13 21:21:04

标签: python python-2.7

我知道有其他帖子有相同的问题,但我无法在我的python脚本中引用这些帖子运行perl脚本。

以下是我的代码的摘录:

var1 = "-proj xyz"
var2 = "-c groups"
proc2 = subprocess.Popen(["perl", "some_perl_script.pl", var1, var2], stdout=subprocess.PIPE)
proc2.stdin.write(var1)
proc2.stdin.write(var2)
proc2.stdin.close()
proc2.wait()

注意:我应该运行:./ some_perl_script.pl -c groups -proj xyz

请让我知道我在这里做错了什么? 谢谢!

1 个答案:

答案 0 :(得分:2)

您将"-proj xyz"作为单个参数传递,而不是两个。换句话说,而不是:

./some_perl_script.pl -c groups -proj xyz

...你做的就是这个:

./some_perl_script.pl '-c groups' '-proj xyz'

因此,当perl脚本查看是否有任何参数-c时,它们都不是,因为-c groups不是-c

当然,在某些情况下,你会侥幸逃脱;处理-cfoo-c foo的大多数参数解析器也会同等对待'-c foo'。但我猜测任何寻找像-proj这样的论点的解析器都不是这样的。

所以,如果你真的需要这些选项/参数对由于某种原因每个都在一个单独的变量中,试试这个:

var1 = ["-proj", "xyz"]
var2 = ["-c", "groups"]
proc2 = subprocess.Popen(["perl", "some_perl_script.pl"] + var1 + var2,
                         stdout=subprocess.PIPE)