12

タスクが正常に完了した後にスクリプトを終了することについていくつかの質問を見てきましたが、失敗したスクリプトに対して同じことを行う方法はありますか?カメラが正しく機能していることを確認するだけのテストスクリプトを書いています。最初のテストが失敗した場合、次のテストも失敗する可能性が高くなります。したがって、最初の失敗で出口を呼び出して画面に出力を提供し、エラーが発生したことを知らせたいと思います。

これで十分な情報になることを願っています。私を助けるためにさらに詳細が必要な場合は私に知らせてください。

4

4 に答える 4

25

機能を探しているだけexit()ですか?

import sys

if 1 < 0:
  print >> sys.stderr, "Something is seriously wrong."
  sys.exit(1)

の(オプションの)パラメーターexit()は、スクリプトがシェルに返す戻りコードです。通常、0以外の値はエラーを示します。

于 2009-07-24T17:25:19.797 に答える
5

を使用sys.exit()して終了できます。ただし、上位のコードが例外をキャッチした場合、そのコードSystemExitは終了しません。

于 2009-07-24T17:26:44.800 に答える
1

エラー条件を識別するために例外を発生させることができます。トップレベルのコードは、これらの例外をキャッチして適切に処理できます。sys.exitを使用して終了できます。たとえば、Python 2.x の場合:

import sys

class CameraInitializationError(StandardError):
    pass

def camera_test_1():
    pass

def camera_test_2():
    raise CameraInitializationError('Failed to initialize camera')

if __name__ == '__main__':
    try:
        camera_test_1()
        camera_test_2()
        print 'Camera successfully initialized'
    except CameraInitializationError, e:
        print >>sys.stderr, 'ERROR: %s' % e
        sys.exit(1)
于 2009-07-24T17:36:29.837 に答える
0

実行中の C++ プログラムからのリターン コードをチェックし、失敗を示している場合は終了します。以下のコードでは、/bin/false と /bin/true は、それぞれエラー コードと成功コードで終了するプログラムです。それらを独自のプログラムに置き換えます。

import os
import sys

status = os.system('/bin/true')
if status != 0:
    # Failure occurred, exit.
    print 'true returned error'
    sys.exit(1)

status = os.system('/bin/false')
if status != 0:
    # Failure occurred, exit.
    print 'false returned error'
    sys.exit(1)

これは、実行中のプログラムが成功するとゼロで終了し、失敗するとゼロ以外で終了することを前提としています。

于 2009-07-24T23:10:33.593 に答える