1

Python 内からいくつかの外部実行可能コードを実行し、出力を利用しようとしています。使用しているコードは、外部ファイルを受け取り、単一の数値 (そのファイルにエンコードされた画像の数) を返します。コマンドラインから実行すると、次のように表示されます。

me@ubuntu:~/nist/hsfsys/bin$ ./nummis  /usr/local/hsfsys/data/by_class/4a/train_4a.mis 
3962

3962は、私が知る限り正しい出力です

ただし、Python 内からサブプロセスを使用しようとすると、次のエラーが発生します。

me@ubuntu:~/nist/hsfsys/bin$ python
Python 2.7.3 (default, Apr 20 2012, 22:39:59) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.check_output(["./nummis","/usr/local/hsfsys/data/by_class/4a/train_4a.mis"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['./nummis', '/usr/local/hsfsys/data/by_class/4a/train_4a.mis']' returned non-zero exit status 32
>>> subprocess.call(["./nummis","/usr/local/hsfsys/data/by_class/4a/train_4a.mis"])
3962
32

この「ゼロ以外の終了ステータス 32」をどのように解釈すればよいですか? 何か問題がある場合、コマンド ラインに表示されないのはなぜですか? 何も問題がない場合、Python が文句を言うのはなぜですか?どうすれば文句を言わないようにすることができますか?

4

1 に答える 1

2

コマンドラインは、明示的に要求された場合にのみ終了ステータスを報告します。

コマンドラインからプログラムを呼び出した後、試してください

echo $?

終了ステータスを表示するため。それも表示32される場合は、呼び出されたプログラムに問題があります。return 0;適切にまたはreturn EXIT_SUCCESS;その中にありませんmain()

于 2012-07-05T05:50:19.620 に答える