これはこの質問のフォローアップですが、に引数stdin
を渡したい場合、どうすればsubprocess
リアルタイムで出力を取得できますか? これは私が現在持っているものです。モジュールからの置き換えも試みましPopen
たが、これはスクリプトのハングにつながります。call
subprocess
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
。
補遺: これは転送には機能しますが、出力は最後にしか表示されず、転送が行われている間に詳細を確認したいと思います。