Python获取子进程的输出
Perl文件1.pl:Python获取子进程的输出,python,subprocess,Python,Subprocess,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
#!/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,那么有什么问题吗?0
是正确的
只需使用:
subprocess.call(["perl", "1.pl", str(b)])
如果您不希望输出中出现0
还可以使用将命令的输出存储在变量中
>>> res = subprocess.check_output(["perl", "so.pl", '2'])
>>> print res
3
python中的0。我e您正在将结果存储在res变量中,3正在从perl程序打印。在perl脚本中,您使用
print
将内容打印到屏幕上,并使用exit
返回值。不带号码调用exit
相当于exit 0
,通常表示成功
在您的情况下,perl将打印3
并返回0
稍后,python会忽略3
,并打印0
如果要将一个数字从perl传递给python,可以使用perl中的
exit$c
返回该数字,或者告诉python检查perl的输出 subprocess.check_输出很棒!
>>> res = subprocess.check_output(["perl", "so.pl", '2'])
>>> print res
3