私は電話からつかもうとしてstdout
いますが、これは次のsubprocess.Popen
ようにして簡単に達成できます。
cmd = subprocess.Popen('ls -l', shell=True, stdout=PIPE)
for line in cmd.stdout.readlines():
print line
stdout
「リアルタイム」でつかみたいです。上記の方法では、PIPEはすべてを取得するのを待ってからstdout
戻ります。
したがって、ロギングの目的では、これは私の要件を満たしていません(たとえば、発生中に何が起こっているかを「確認」します)。
実行中に行ごとに取得する方法はありstdout
ますか?または、これはの制限ですか(閉じるsubprocess
まで待たなければなりません)。PIPE
編集
私が切り替えるreadlines()
と、 (理想的readline()
ではない)最後の行だけが表示されます:stdout
In [75]: cmd = Popen('ls -l', shell=True, stdout=PIPE)
In [76]: for i in cmd.stdout.readline(): print i
....:
t
o
t
a
l
1
0
4