2016-04-24 15 views
-1

Pythonには非常に新しい。BASHとPythonを一緒に使う

私はメニュー付きのPythonスクリプトを持っています。 1つの選択肢では、私は別のスクリプトを開始したり呼び出したいが、それはBASHだ。結果は/ tmpのテキストファイルに入れられます。 私はこれをやりたい: Pythonスクリプトを開始します。メニュー選択時に、BASHスクリプトを起動させます。最後に、/ tmp内のファイルを処理するPythonスクリプトに戻ります。 これは可能ですか?どうすればいい?

+0

http://stackoverflow.com/questions/3777301/how-to-call-a-shell-script-from-python-code –

+1

多くの質問が重複しています。http://stackoverflow.com/questions/4256107/実行中のbash-commands-in-python http://stackoverflow.com/questions/26236126/how-to-run-bash-command-inside-python-script http://stackoverflow.com/questions/89228/calling-外部コマンドイン・パイソン –

答えて

3

あなたは標準ライブラリの一部であるsubprocessモジュールを探しています。

subprocessモジュールを使用すると、新しいプロセスを作成し、入力/出力/エラーパイプに接続して戻りコードを取得できます。

UNIXシステムでは、subprocessは、新しいUnixプロセスを生成し、その結果を実行し、出力をフェッチすることができます。 bashスクリプトはUnixプロセスとして実行されるので、bashスクリプトを直接実行するようにシステムに指示することができます。

簡単な例:

import subprocess 
ls_output = subprocess.check_output(['ls']) # returns result of `ls` 

あなたは簡単に一緒に引数を糸曳きによってbashスクリプトを実行することができます。ここでは、subprocessの使い方の素敵なexampleです。

subprocessのすべてのタスクはsubprocess.Popen()コマンドを使用しているため、その動作を理解する価値があります。唯一の重要な部分はPopen()に引数のリストを渡している

>>> import shlex, subprocess 
>>> command_line = raw_input() 
/bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'" 
>>> args = shlex.split(command_line) 
>>> print args 
['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"] 
>>> p = subprocess.Popen(args) # Success! 

注:Pythonのドキュメントはbashスクリプトを呼び出すこの例を提供します。

関連する問題