279

というメッセージを受け取りましたscript xyz.py returned exit code 0。これは何を意味するのでしょうか?

Python の終了コードは何を意味しますか? いくつありますか?どれが重要ですか?

4

13 に答える 13

290

sys.exit()スクリプトでの呼び出しを探しています。そのメソッドへの引数は、終了コードとして環境に返されます。

スクリプトがexitメソッドを呼び出しておらず、0 がデフォルトの終了コードである可能性はかなり高いです。

于 2008-11-12T20:50:48.060 に答える
123

のドキュメントからsys.exit

オプションの引数argは、終了ステータス(デフォルトはゼロ)を与える整数、または別のタイプのオブジェクトにすることができます。整数の場合、ゼロは「正常終了」と見なされ、ゼロ以外の値はシェルなどによって「異常終了」と見なされます。ほとんどのシステムでは、0〜127の範囲である必要があり、そうでない場合は未定義の結果が生成されます。一部のシステムには、特定の終了コードに特定の意味を割り当てるための規則がありますが、これらは一般に未開発です。Unixプログラムは通常、コマンドライン構文エラーに2を使用し、他のすべての種類のエラーに1を使用します。

終了コードが使用される1つの例は、シェルスクリプトです。Bashでは、特別な変数$?で最後の終了ステータスを確認できます。

me@mini:~$ python -c ""; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(0)"; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(43)"; echo $?
43

個人的には(Linuxシステムで)見つけた終了コードを使用しようとしています/usr/include/asm-generic/errno.hが、これが正しいことかどうかはわかりません。

于 2008-11-12T21:31:23.093 に答える
21

errno標準の終了コードを定義するモジュールがあります。

たとえば、Permission deniedはエラー コード13です。

import errno, sys

if can_access_resource():
    do_something()
else:
    sys.exit(errno.EACCES)
于 2008-11-13T07:32:08.153 に答える
15

0 の終了コードは通常、「ここでは何も問題がない」ことを意味します。ただし、スクリプトのプログラマーが規則に従わなかった場合は、ソースを参照してその意味を確認する必要があります。通常、ゼロ以外の値がエラー コードとして返されます。

于 2008-11-12T20:46:28.643 に答える
5

オペレーティングシステムのコマンドには終了コードがあります。Linuxの終了コードを探して、これに関するいくつかの資料を確認してください。シェルは終了コードを使用して、プログラムが機能したか、問題があったか、失敗したかを判断します。標準の(または少なくとも一般的に使用される)終了コードを作成するためのいくつかの取り組みがあります。この高度なシェルスクリプトの投稿を参照してください。

于 2008-11-12T23:12:15.247 に答える
4

終了コードは、スクリプト作成者によって割り当てられた意味のみを持ちます。Unix の伝統では、終了コード 0 は「成功」を意味し、それ以外はすべて失敗です。特定のスクリプトの終了コードの意味を確認する唯一の方法は、スクリプト自体を調べることです。

于 2008-11-12T20:46:50.813 に答える
2

多くのプログラミング言語の終了コードは、プログラマ次第です。そのため、プログラムのソース コード (またはマニュアル) を確認する必要があります。ゼロは通常、「すべてがうまくいった」という意味です。

于 2008-11-12T20:48:04.303 に答える
-3

例外ハンドラなどを実行できるようにするには、プロセスを突然終了させるのexit(0)ではなく、ビルトインを使用してクリーン シャットダウンすることをお勧めします。sys.exit()

于 2017-03-10T13:12:44.133 に答える