commands.getstatusoutput akan bekerja dengan baik untuk situasi ini. (Tidak digunakan lagi sejak Python 2.6)
import commands
print(commands.getstatusoutput("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'"))
os.popen berfungsi untuk ini. popen - membuka pipa ke atau dari perintah. Nilai yang dikembalikan adalah objek file terbuka yang terhubung ke pipa, yang dapat dibaca. split('\n') mengonversi keluaran menjadi daftar
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
Gunakan subprocess
modul sebagai gantinya:
import subprocess
output = subprocess.check_output("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'", shell=True)
Sunting:ini baru di Python 2.7. Di versi sebelumnya ini seharusnya berfungsi (dengan perintah ditulis ulang seperti yang ditunjukkan di bawah):
import subprocess
output = subprocess.Popen(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'], stdout=subprocess.PIPE).communicate()[0]
Sebagai catatan tambahan, Anda dapat menulis ulang
cat syscall_list.txt | grep f89e7000
Untuk
grep f89e7000 syscall_list.txt
Dan Anda bahkan dapat mengganti seluruh pernyataan dengan satu awk
skrip:
awk '/f89e7000/ {print $2}' syscall_list.txt
Mengarah ke:
import subprocess
output = subprocess.check_output(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'])