commands.getstatusoutput funzionerebbe bene per questa situazione. (Deprecato da Python 2.6)
import commands
print(commands.getstatusoutput("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'"))
os.popen funziona per questo. popen - apre una pipe da o verso il comando. Il valore restituito è un oggetto file aperto connesso alla pipe, che può essere letto. split('\n') converte l'output in list
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
Usa il subprocess
modulo invece:
import subprocess
output = subprocess.check_output("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'", shell=True)
Modifica:questo è nuovo in Python 2.7. Nelle versioni precedenti questo dovrebbe funzionare (con il comando riscritto come mostrato di seguito):
import subprocess
output = subprocess.Popen(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'], stdout=subprocess.PIPE).communicate()[0]
Come nota a margine, puoi riscrivere
cat syscall_list.txt | grep f89e7000
A
grep f89e7000 syscall_list.txt
E puoi persino sostituire l'intera istruzione con un singolo awk
script:
awk '/f89e7000/ {print $2}' syscall_list.txt
Porta a:
import subprocess
output = subprocess.check_output(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'])