cho Python 2.7+ câu trả lời thành ngữ là sử dụng subprocess.check_output()
Bạn cũng nên lưu ý việc xử lý các đối số khi gọi một quy trình con, vì nó có thể hơi khó hiểu ....
Nếu args chỉ là một lệnh đơn lẻ không có đối số của riêng nó (hoặc bạn đã shell=True
đặt), thì đó có thể là một chuỗi. Nếu không thì nó phải là một danh sách.
ví dụ ... để gọi ls
lệnh, điều này là tốt:
from subprocess import check_call
check_call('ls')
đây là
from subprocess import check_call
check_call(['ls',])
tuy nhiên, nếu bạn muốn chuyển một số đối số cho lệnh shell, bạn không thể thực hiện điều này:
from subprocess import check_call
check_call('ls -al')
thay vào đó, bạn phải vượt qua nó như một danh sách:
from subprocess import check_call
check_call(['ls', '-al'])
các shlex.split()
chức năng đôi khi có thể hữu ích để tách một chuỗi thành vỏ giống như cú pháp trước khi tạo một trình con ... như thế này:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))
"ntpq -p"
, đây là một phần khác của vấn đề hơn bạn đang hỏi về.