11

Python スクリプト ファイルを実行する方法が必要です。スクリプトが未処理の例外で失敗した場合、Python はゼロ以外の終了コードで終了する必要があります。私の最初の試みは次のようなものでした:

import sys
if __name__ == '__main__':
    try:
        import <unknown script>
    except:
        sys.exit(-1)

しかし、__main__ガードが頻繁に使用されるため、多くのスクリプトが壊れます。これを適切に行う方法について何か提案はありますか?

4

2 に答える 2

16

Pythonはすでにあなたが求めていることをしています:

$ python -c "raise RuntimeError()"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
RuntimeError
$ echo $?
1

OPからのいくつかの編集の後、おそらくあなたは望むでしょう:

import subprocess

proc = subprocess.Popen(['/usr/bin/python', 'script-name'])
proc.communicate()
if proc.returncode != 0:
    # Run failure code
else:
    # Run happy code.

ここで混乱している場合は修正してください。

于 2011-03-28T08:08:17.237 に答える
2

スクリプト内でスクリプトを実行したい場合、インポートは方法ではありません。例外をキャッチすることのみを気にする場合は、 exec を使用できます。

namespace = {}
f = open("script.py", "r")
code = f.read()
try:
    exec code in namespace
except Exception:
    print "bad code"

最初にコードをコンパイルすることもできます

compile(code,'<string>','exec')

スクリプトを複数回実行し、名前空間で結果を実行する予定がある場合

または、スクリプトによって生成された出力を取得する必要がある場合は、上記のようにサブプロセスを使用します。

于 2011-03-28T08:23:20.980 に答える