質問

script xyz.pyが終了コード0を返したというメッセージが表示されました。これはどういう意味ですか?

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

役に立ちましたか?

解決

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

スクリプトがexitメソッドを呼び出すことはなく、デフォルトの終了コードは0である可能性が高いです。

他のヒント

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

個人的に /usr/include/asm-generic/errno.h (Linuxシステム)にある終了コードを使用しようとしていますが、これが正しいこと。

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

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

です。
import errno, sys

if can_access_resource():
    do_something()
else:
    sys.exit(errno.EACCES)

レコードには、こちらで定義されているPOSIX標準終了コードを使用できます。

例:

import sys, os

try:
    config()
except:
    sys.exit(os.EX_CONFIG) 
try:
    do_stuff()
except:
    sys.exit(os.EX_SOFTWARE)
sys.exit(os.EX_OK) # code 0, all ok

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

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

標準POSIX終了コードを移植可能に使用する場合、PyPIの exitstatus パッケージを参照してください。

パッケージのインストール:

pip install exitstatus

コードで使用:

import sys
from exitstatus import ExitStatus

sys.exit(ExitStatus.success)

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

答えは「終了コード0の意味に依存」

ただし、ほとんどの場合、これは「すべてが正常」という意味です


POSIXが好きです:

そのため、シェルで次のように入力します:

python script.py&&エコー 'OK' || echo 'Not OK'

Pythonスクリプトが sys.exit(0)を呼び出すと、シェルは「OK」を返します

私のPythonスクリプトが sys.exit(1)(またはゼロ以外の整数)を呼び出すと、シェルは「Not OK」を返します

シェルで賢くなり、スクリプトのドキュメント(またはソース)を読んで終了コードの意味を確認するのはあなたの仕事です。

  

sys.exit()を使用するのではなく、exit(0)組み込みのクリーンシャットダウンを推奨します

これが良いアドバイスかどうかわかりません。

記載されているドキュメント読み取り:

  

サイトモジュール(起動時に自動的にインポートされますが、-Sコマンドラインオプションが指定されている場合を除く)は、組み込みの名前空間にいくつかの定数を追加します。これらは対話型インタープリターシェルに役立ち、プログラムでは使用しないでください

その後:

  

exit(code = None)

     

印刷時に「quit()またはCtrl-D(つまりEOF)を使用して終了」などのメッセージを印刷し、呼び出されたときに指定された終了コードでSystemExitを発生させるオブジェクト。

sys.exit()と比較した場合ドキュメント、それは SystemExit 例外を発生させるのと同じメカニズムを使用しています。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top