2

Perl 文件 1.pl:

#!/usr/local/bin/perl -w

($b) = @ARGV;    
$a = 1;
$c = $a + $b;
print "$c\n";

exit;

python文件1.py

#!/usr/bin/python
# -*- coding: utf-8 -*-

import subprocess
b = 2
res = subprocess.call(["perl", "1.pl", str(b)])
print res

签出

$python 1.py

输出:

3
0

输出应该是 3,那怎么了?

4

3 回答 3

4

0返回码属性

$perl so.pl 2
3
$ echo $?
0            #this gets stored in `res`

只需使用:

subprocess.call(["perl", "1.pl", str(b)])

如果您不希望0在输出中使用它。

您还可以使用subprocess.check_output将命令的输出存储在变量中。

>>> res = subprocess.check_output(["perl", "so.pl", '2'])
>>> print res
3
于 2013-09-16T07:01:25.257 回答
2

在您的 perl 脚本中,您可以print将某些内容打印到屏幕上并exit返回一个值。不带号码的呼叫exit相当于exit 0,通常代表成功。

在您的情况下,您的 perl 将打印3并返回0

后来 python 忽略3并打印0.

如果你想将一个数字从你的 perl 传递给你的 python,要么使用exit $cperl 返回该数字,要么告诉 python 检查你的 perl 的输出。

于 2013-09-16T07:10:32.630 回答
2

0 来自蟒蛇。一世。e 您将结果存储在 res 变量中,而 3 正在从 perl 程序打印

于 2013-09-16T07:02:27.997 回答