GNU/Linux >> Linux の 問題 >  >> Linux

実行されたシェルコマンドの結果をPythonの変数に保存する方法は?

この状況では、commands.getstatusoutput がうまく機能します。 (Python 2.6 以降は非推奨)

import commands
print(commands.getstatusoutput("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'"))

os.popen はこれで機能します。 popen - コマンドとの間でパイプを開きます。戻り値は、読み取り可能なパイプに接続された開いているファイル オブジェクトです。 split('\n') は出力をリストに変換します

import os
list_of_ls = os.popen("ls").read().split('\n')
print list_of_ls
import os
list_of_call = os.popen("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'").read().split('\n')
print list_of_call

subprocess を使用 代わりにモジュール:

import subprocess
output = subprocess.check_output("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'", shell=True)

編集:これは Python 2.7 の新機能です。以前のバージョンでは、これは機能するはずです (以下に示すようにコマンドを書き直します):

import subprocess
output = subprocess.Popen(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'], stdout=subprocess.PIPE).communicate()[0]

補足として、書き換えることができます

cat syscall_list.txt | grep f89e7000

grep f89e7000 syscall_list.txt

また、ステートメント全体を単一の awk に置き換えることもできます スクリプト:

awk '/f89e7000/ {print $2}' syscall_list.txt

次へ:

import subprocess
output = subprocess.check_output(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'])

Linux
  1. コマンドの出力をシェル変数に割り当てる方法は?

  2. 独自のIPアドレスを取得し、シェルスクリプトの変数に保存する方法は?

  3. Grub2のコマンドからの出力に等しい変数を設定するにはどうすればよいですか?

  1. Lsコマンドの結果の補足を取得しますか?

  2. シェルで最後に実行されたコマンドの実行時間を見つける方法はありますか?

  3. シェル変数でWebページのコンテンツを取得するには?

  1. コマンド ラインから任意の場所で実行するスクリプトをインストールするにはどうすればよいですか?

  2. 外部のpythonスクリプトでDjangoシェルでコードを実行するには?

  3. シェルコマンドの出力をループするにはどうすればよいですか?