从python运行perl脚本

时间:2012-09-12 09:24:30

标签: python windows perl

我知道有关Stack Overflow的一些话题。但这些对我来说都没有任何意义。我是python和perl的新手,并尽我所能去理解。我想从一段python代码中运行一个perl脚本。

在命令提示符下执行perl脚本如下:

perl perlscript.pl input.bopt7 output.xml

我想从我的python代码中运行此命令。 我尝试过以下方法:

pipe = subprocess.Popen(["perlscript.pl" , "input.bopt7" , "output.xml"], stdout=subprocess.PIPE)

但这不起作用。我得到一个错误,说它不是一个有效的win32 ...

我不需要此脚本的输入或输出。只需要运行一次。

3 个答案:

答案 0 :(得分:2)

执行perl脚本时需要包含perl命令:

pipe = subprocess.Popen(["perl", "perlscript.pl" , "input.bopt7" , "output.xml"], stdout=subprocess.PIPE)

你在命令行提示符下做了同样的事情; Popen类无法从perlscript.pl文件中猜出您想要使用Perl运行此脚本。 : - )

答案 1 :(得分:0)

如果您perl.exe中有perl.exe,则第一个参数应为PATH;或者是可执行文件的完整路径,因为其余的都是perl.exe的参数。

另请确保为perlscript.plinput.bopt7添加完整路径。

答案 2 :(得分:0)

您是否尝试将perl添加到Popen参数中(就像在命令行中一样)?

  

pipe = subprocess.Popen([“perl”,“perlscript.pl”,“input.bopt7”,“output.xml”],stdout = subprocess.PIPE)

在您的示例中,Windows尝试将“perlscript.pl”作为Win32可执行文件执行,因为这是您指定的第一个参数,并且因为它不包含正确的二进制标头而失败(因为它是文本文件)