這是this question的後續操作,但是如果我想將參數傳遞到stdin
到subprocess
,我怎樣才能實時獲得輸出?這是我目前所擁有的;我也嘗試用subprocess
模塊替換Popen
與call
,這隻會導致腳本掛起。從需要stdin的子進程中實時打印stdout
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
在前發問,我沒要過stdin
我建議使用p.stdout.readline
,有沒有房有沒有管什麼stdin
。
附錄:這適用於轉移,但我只在最後看到輸出,我希望在轉移發生時看到轉移的詳細信息。
如果你想要的是看到輸出那麼就放下'stdout = PIPE'。 – jfs