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

在python中使用选项调用perl脚本,python,python-2.7,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.

我知道还有其他帖子也有同样的问题,但我无法在引用这些帖子的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

请让我知道我做错了什么? 谢谢

您将作为单个参数而不是两个参数传递
“-proj xyz”
。换句话说,与此相反:

./some_perl_script.pl -c groups -proj xyz
…您正在做与此等效的操作:

./some_perl_script.pl '-c groups' '-proj xyz'
因此,当perl脚本查看是否有任何参数是
-c
,它们都不是,因为
-c组
不是
-c

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

因此,如果出于某种原因确实需要将这些选项/参数对放在单独的变量中,请尝试以下方法:

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

的可能重复,但如果没有关于实际问题的详细信息,我无法确定。为什么要将
var1
var2
的内容发送到
Popen
命令,并将其写入stdin?