Đây là theo dõi tới this question, nhưng nếu tôi muốn chuyển đối số đến stdin
đến subprocess
, làm cách nào để có được kết quả trong thời gian thực? Đây là những gì tôi hiện có; Tôi cũng đã thử thay thế Popen
bằng call
từ mô-đun subprocess
và điều này chỉ dẫn đến tập lệnh treo.in stdout trong thời gian thực từ một tiến trình con yêu cầu stdin
from subprocess import Popen, PIPE, STDOUT
cmd = 'rsync --rsh=ssh -rv --files-from=- thisdir/ servername:folder/'
p = Popen(cmd.split(), stdout=PIPE, stdin=PIPE, stderr=STDOUT)
subfolders = '\n'.join(['subfolder1','subfolder2'])
output = p.communicate(input=subfolders)[0]
print output
Trong câu hỏi cũ mà tôi không cần phải vượt qua stdin
Tôi đã đề nghị sử dụng p.stdout.readline
, có không có chỗ đó để bất cứ điều gì để ống stdin
.
Phụ lục: Tính năng này hoạt động để chuyển, nhưng tôi chỉ thấy đầu ra ở cuối và tôi muốn xem chi tiết về quá trình chuyển trong khi nó đang diễn ra.
nếu tất cả các bạn muốn là để xem kết quả sau đó chỉ cần thả 'stdout = PIPE'. – jfs