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

0returncode 属性です。

$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 は を無視し30.

perl から python に数値を渡したい場合は、perl を使用exit $cしてその数値を返すか、perl の出力を確認するように python に指示します。

于 2013-09-16T07:10:32.630 に答える
2

パイソンから0。私。e 結果を res 変数に格納し、3 は perl プログラムから出力しています

于 2013-09-16T07:02:27.997 に答える