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 tiến trình con, vì nó có thể có một chút khó hiểu ....
Nếu args chỉ là một lệnh duy nhất không có args của chính nó (hoặc bạn có shell=True
thiết lập), nó có thể là một chuỗi. Nếu không, nó phải là một danh sách.
ví dụ ... để gọi lệnh ls
, điều này là tốt:
from subprocess import check_call
check_call('ls')
nên là thế này:
from subprocess import check_call
check_call(['ls',])
tuy nhiên, nếu bạn muốn vượt qua một số args để lệnh shell , bạn không thể làm điều này:
from subprocess import check_call
check_call('ls -al')
ins tead, bạn phải vượt qua nó như là 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 cú pháp vỏ như trước đây tạo ra một quy trình con ... như thế này:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))
Nguồn
2016-03-08 02:38:33
Nó luôn luôn là tốt để đăng mã thực tế bạn chạy và traceback thực tế hoặc bahaviour bất ngờ cho các câu hỏi cụ thể như thế này. Ví dụ, tôi không biết những gì bạn đã cố gắng làm để có được kết quả đầu ra và tôi nghi ngờ bạn đã không thực sự đạt được điều đó để bắt đầu - bạn sẽ gặp lỗi khi không tìm tập tin cho '" ntpq -p "' , đó là một phần khác của vấn đề bạn đang hỏi. –