Python获取子进程的输出

时间:2013-09-16 06:58:27

标签: 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 1.py

输出:

3
0

输出应该是3,那有什么不对?

3 个答案:

答案 0 :(得分:3)

0returncode attribute

$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

答案 1 :(得分:1)

来自python的

0。一世。 e您将结果存储在res变量中,3是从perl程序打印

答案 2 :(得分:1)

在您的perl脚本中,您使用print打印某些内容到屏幕,exit返回一个值。在没有号码的情况下拨打exit相当于exit 0,这通常代表成功。

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

稍后python会忽略3并打印0

如果你想从perl传递一个数字到你的python,或者在perl中使用exit $c返回该数字,或者告诉python检查你的perl的输出。