嘗試將子進程的輸出重定向到文件。subprocess.Popen()IO重定向
server.py:
while 1:
print "Count " + str(count)
sys.stdout.flush()
count = count + 1
time.sleep(1)
Laucher:
cmd = './server.py >temp.txt'
args = shlex.split(cmd)
server = subprocess.Popen(args)
輸出出現在屏幕上,temp.txt
保持爲空。 我在做什麼錯?
作爲背景我試圖捕獲已寫入的程序的輸出。
我不能使用:
server = subprocess.Popen(
[exe_name],
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
作爲該程序可能無法平齊。 相反,我打算通過fifo重定向輸出。這工作正常,如果我手動啓動server.py但顯然不是如果我Popen()
導致重定向不起作用。 ps -aux
顯示server.py
已正確啓動。
這是有效的。溝通會阻止閱讀器,直到服務器終止,但現在我可以重定向,我可以發送服務器輸出到FIFO。 – 2012-01-17 23:37:09
這裏不需要調用'.communicate()'。 'subprocess.check_call('command',stdout = file)'工作。 – jfs 2015-11-06 23:21:29