2016-03-28 19 views
0

特定のシェルコマンドのラッパーを追加します。これはLinuxのみで実行され、クロスプラットフォームのサポートは気にしません。このコードは機能しますが、これを実現するより良い方法はありますか?または私は奇妙な行動まで自分自身を開いていますか?シンプルなPythonシェルラッパースクリプト(os.execv?を使用)

import os 
import sys 

# Do my personal validation here 
do_some_validation(sys.argv) 

# Now call the real program 
os.execv('/usr/bin/some-command', sys.argv) 

ありがとう! osがちょうどbashにそれをスローするのに対し、

答えて

1

あなたは、それがコマンドの実行をより詳細に制御を持っているという点でsubprocess

import subprocess 
subprocess.call(['/usr/bin/some-command', arg1, arg2]) 

subprocessは、道にosよりも優れて使用することができます。

+0

サブプロセスは具体的に何を提供していますか?私がこれを投稿する前にグーグルで行っていたとき、私はあなたの意見のバリエーションを見ていましたが、この場合、私は実行ファイルをラップしているものに置き換えたいと思います。私は戻りコード、アウト/エラー、エラー処理などを行う必要はありません。 – user3827132

+0

あなたのケースでは、もちろんosにとどまることができます。サブプロセスに切り替える必要はありませんが、将来的にスクリプトを拡張しようとしている場合は、いくつかのリターンコード、パイプなどが必要になるかもしれません。 –

関連する問題