,而如果這是我的子流程:攔截子進程的標準輸出它運行
import time, sys
for i in range(200):
sys.stdout.write('reading %i\n'%i)
time.sleep(.02)
這是腳本控制和修改子進程的輸出:
import subprocess, time, sys
print 'starting'
proc = subprocess.Popen(
'c:/test_apps/testcr.py',
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE )
print 'process created'
while True:
#next_line = proc.communicate()[0]
next_line = proc.stdout.readline()
if next_line == '' and proc.poll() != None:
break
sys.stdout.write(next_line)
sys.stdout.flush()
print 'done'
爲什麼readline
和communicate
等到過程完成後再運行?有沒有簡單的方法來實時傳遞(和修改)子進程的stdout?
順便說一句,我見過this,但我不需要日誌記錄功能(並且不需要太多理解)。
我在Windows XP上。
相關:[?如何沖洗的Python打印的輸出(http://stackoverflow.com/q/230751/95735) – 2012-10-30 20:31:42