尝试将子进程的输出重定向到文件。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