untuk Python 2.7+, jawaban idiomatis adalah menggunakan subprocess.check_output()
Anda juga harus mencatat penanganan argumen saat menjalankan subproses, karena dapat sedikit membingungkan ....
Jika args hanya perintah tunggal tanpa args sendiri (atau Anda telah shell=True
mengatur), itu bisa berupa string. Kalau tidak, itu harus daftar.
misalnya ... untuk menjalankan ls
perintah, ini tidak masalah:
from subprocess import check_call
check_call('ls')
begitu juga ini:
from subprocess import check_call
check_call(['ls',])
namun, jika Anda ingin meneruskan beberapa argumen ke perintah shell, Anda tidak bisa melakukan ini:
from subprocess import check_call
check_call('ls -al')
alih-alih, Anda harus meneruskannya sebagai daftar:
from subprocess import check_call
check_call(['ls', '-al'])
yang shlex.split()
fungsi kadang-kadang dapat berguna untuk membagi string menjadi shell-seperti sintaks sebelum membuat subproses ... seperti ini:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))
"ntpq -p"
, yang merupakan bagian yang berbeda dari masalahnya daripada yang Anda tanyakan.