tôi đọc mỗi thread tôi tìm thấy trên StackOverflow về cách gọi lệnh vỏ từ Python sử dụng subprocess
, nhưng tôi không thể tìm thấy một câu trả lời mà áp dụng cho tình hình của tôi dưới đây:Shell ống với tiến trình con bằng Python
Tôi muốn làm như sau từ Python:
Chạy lệnh shell
command_1
. Thu thập các đầu ra trong biếnresult_1
Shell ống
result_1
vàocommand_2
và thu thập kết quả trênresult_2
. Nói cách khác, chạycommand_1 | command_2
sử dụng kết quả mà tôi thu được khi chạycommand_1
trong bước trướcLàm tương tự ống
result_1
vào một lệnh thứ bacommand_3
và nhận kết quả tạiresult_3
.
Cho đến nay tôi đã cố gắng:
p = subprocess.Popen(command_1, stdout=subprocess.PIPE, shell=True)
result_1 = p.stdout.read();
p = subprocess.Popen("echo " + result_1 + ' | ' +
command_2, stdout=subprocess.PIPE, shell=True)
result_2 = p.stdout.read();
lý do có vẻ là rằng "echo " + result_1
không mô phỏng các quá trình lấy đầu ra của một lệnh cho đường ống.
Điều này có thể thực hiện bằng cách sử dụng quy trình con không? Nếu vậy, làm thế nào?
Xem [ví dụ này trong tài liệu] (http://docs.python.org/library/subprocess.html#replacing-shell-pipeline) để biết cách thực hiện. –
Cảm ơn @SvenMarnach, liệu điều đó vẫn cho phép tôi thu thập đầu ra của lệnh đầu tiên trong một biến Python? –