Python获取脚本输出,现在只有文件的pid

时间:2015-01-26 10:48:58

标签: python stdout pid

例如我运行一个脚本

os.execv('script.py',('',))

当我在docs中读到时,这个命令从你当前的脚本开始一个脚本,通过它的pid并重新设置它来运行script.py。所以我可以获得流程的pid。 问题如下: 运行execv之后我需要得到这个脚本的标准输出,我唯一知道的是进程的pid。有可能用python执行此操作吗?有什么建议 ?我只需要使用execv()

2 个答案:

答案 0 :(得分:0)

os.execv只是绑定到execve系统调用。你需要的是一个subprocess模块:

import sys
import subprocess

proc = subprocess.Popen([sys.executable, 'script.py'],
                        stdout = subprocess.PIPE)
proc.wait()
print(proc.stdout.read())

请参阅https://docs.python.org/2/library/subprocess.html

答案 1 :(得分:0)

另一种可能的解决方案,将输出重定向到文件。

import os,sys
sys.stdout = open("./data.out","w")
os.dup2(sys.stdout.fileno(), 1)
os.execv('/usr/bin/python', ['python', './script.py'])