GNU/Linux >> Znalost Linux >  >> Linux

Jak uložit výsledek provedeného příkazu shellu do proměnné v pythonu?

commands.getstatusoutput by v této situaci fungoval dobře. (Zastaralé od Pythonu 2.6)

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

os.popen na to funguje. popen - otevře roura do nebo z příkazu. Návratová hodnota je otevřený souborový objekt připojený k rouře, který lze číst. split('\n') převede výstup na seznam

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

Použijte subprocess modul místo toho:

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

Edit:toto je novinka v Pythonu 2.7. V dřívějších verzích by to mělo fungovat (s příkazem přepsaným, jak je uvedeno níže):

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

Jako vedlejší poznámku můžete přepsat

cat syscall_list.txt | grep f89e7000

Komu

grep f89e7000 syscall_list.txt

A dokonce můžete celý příkaz nahradit jedním awk skript:

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

Vede k:

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

Linux
  1. Jak používat příkaz basename?

  2. Jak přiřadit výstup příkazu proměnné shellu?

  3. Linux – Jak zrušit nastavení proměnné prostředí „http_proxy“ v Pythonu?

  1. Existuje způsob, jak zjistit dobu běhu posledního provedeného příkazu v shellu?

  2. Jak získat obsah webové stránky v proměnné shellu?

  3. Jak nainstaluji skript pro spuštění kdekoli z příkazového řádku?

  1. Jak spustit kód v prostředí Django pomocí externího skriptu python?

  2. Jak mohu zacyklit výstup příkazu shellu?

  3. Jak nastavit proměnnou prostředí v GDB pomocí příkazu shell?