2016-07-25 15 views
0

OS(Linux)コマンドを実行できるPythonスクリプトを実行したいと思います。 OSモジュールでは、出力を変数にリダイレクトできません。 Subprocess.popenでは、引数で変数を使用できません。代替手段を見つける際に誰かが助けを必要とする。モジュールを使ってPythonからOSコマンドを実行する

pythonスクリプトからいくつかのOSコマンドを実行しようとしています。たとえばdf -h出力です。 osやサブプロセスのようないくつかのモジュールを使ってうまく動作しますが、これらの出力を変数に格納することはできません。

ここでは、この出力を変数に保存できません。これを変数にどのように保存するのですか?

subprocess.Popenのような複数のオプションがありますが、適切な出力が得られません。

以下のプログラムではサブプロセスモジュールを使用しましたが、ここでは別の問題があります。コマンドが大きいため、サブプロセスの変数を使用できません.Popen。

+0

shantojosee @ SRV-DCB-ERP-mgnt01(docsを参照)! USR/binに/ pythonの 輸入サブプロセス 位(「pingにホストを入力します。」)入力 ホスト= raw_inputをユーザーに依頼 位 P1 = suとechoコマンドを設定し、パイプへの出力を指示しますbprocess.Popen([ 'ピング'、 '-c 2'、ホスト]、STDOUT = subprocess.PIPE) #コマンド 出力= p1.communicateを(実行)[0] プリント出力 shantojosee @ srv- dcb-erp-mgnt01:〜/ python> –

+1

あなたの質問はコメントセクションではなくコードを追加するように[編集]してください – DeepSpace

答えて

0

正確なユースケースに応じて、サブプロセスまたはpexpectのいずれかを使用します。

サブプロセスは、os.systemの機能とその他の機能を実行できます。あなたはそれが終了してから出力を取得するのを待つ、いくつかのコマンドを起動する必要がある場合は、サブプロセスはそれを行うことができます。

import subprocess 
res = subprocess.check_output('ls -l') 

しかし、あなたには、いくつかのコマンドラインユーティリティと対話する必要がある場合、それは繰り返し読み取り/書き込みで、 pexpectモジュールを見てください。これはUnixシステム向けに書かれていますが、クロスプラットフォームに移行したい場合は、winpexpectというWindows用のポートがあります。

産卵の属性に何が必要でしょうは '前':〜/パイソン>猫ピング #を/:

p = pexpect.spawn('/bin/ls') 
p.expect(pexpect.EOF) 
print p.before 

関連する問題