我知道有其他帖子有相同的问题,但我无法在我的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
请让我知道我在这里做错了什么? 谢谢!
答案 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)