Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python获取子进程的输出_Python_Subprocess - Fatal编程技术网

Python获取子进程的输出

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

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,那么有什么问题吗?

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