commands.getstatusoutput funcionaría bien para esta situación. (Obsoleto desde Python 2.6)
import commands
print(commands.getstatusoutput("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'"))
os.popen funciona para esto. popen:abre una tubería hacia o desde el comando. El valor devuelto es un objeto de archivo abierto conectado a la tubería, que se puede leer. split('\n') convierte la salida en lista
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
Utilice el subprocess
módulo en su lugar:
import subprocess
output = subprocess.check_output("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'", shell=True)
Editar:esto es nuevo en Python 2.7. En versiones anteriores, esto debería funcionar (con el comando reescrito como se muestra a continuación):
import subprocess
output = subprocess.Popen(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'], stdout=subprocess.PIPE).communicate()[0]
Como nota al margen, puede reescribir
cat syscall_list.txt | grep f89e7000
Para
grep f89e7000 syscall_list.txt
E incluso puede reemplazar la declaración completa con un solo awk
guión:
awk '/f89e7000/ {print $2}' syscall_list.txt
Llevando a:
import subprocess
output = subprocess.check_output(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'])