サブプロセスモジュールを使用してbashスクリプトを実行するにはどうすればよいですか?
これは私が現在使用しているものです:
subprocess.Popen(['/my/file/path/programname.sh', 'arg1 arg2 %s' % arg3], \
Shell = True)
Bashスクリプトはパラメーターを一切取り込んでいないようです。洞察は大歓迎です!
引数をリストとして渡します。 ドキュメントの最初のコード例 を参照してください。
_import subprocess
subprocess.check_call(['/my/file/path/programname.sh', 'arg1', 'arg2', arg3])
_
_arg3
_が文字列ではない場合。 check_call()
:arg3 = str(arg3)
に渡す前に文字列に変換します。
subprocess.Popen(['/my/file/path/programname.sh arg1 arg2 %s' % arg3], Shell = True).
Shell = True
を使用する場合、スクリプトとその引数は文字列として渡す必要があります。 args
シーケンス内の他の要素は、シェルへの引数として扱われます。
完全なドキュメントは http://docs.python.org/2/library/subprocess.html#subprocess.Popen にあります。
こんにちは、私はこれが解決策であることはかなり遅いことを知っていますが、誰かを助けることができます。
例:
import subprocess
pass_arg=[]
pass_arg[0]="/home/test.sh"
pass_arg[1]="arg1"
pass_arg[2]="arg2"
subprocess.check_call(pass_arg)
上記の例では、シェルスクリプトtest.shのパラメーターとしてarg1とarg2を提供しています。
基本的に、サブプロセスには配列が必要です。したがって、配列にデータを入力し、パラメーターとして提供できます。
上記のすべてに含まれていないもう1つの例は、
subprocess.Popen(['/your/script.sh %s %s %s' %(argument1,argument2,argument3)], Shell = True)
%(argument1,argument2,argument3)
と入力するとき、_%
_と_(
_の間にスペースがあってはならないことに注意してください。たとえば、% (argument1,argument2,argument3)
は無効です。