Python:如何从script2运行script1和脚本2中的DUPLICATE script1的输出(stdout,stderr)来记录(到文件中)

时间:2011-05-28 09:12:02

标签: python

我有两个python脚本:script1.py和script2.py

我想从script2(os.system,subprocess.Popen,..)运行script1,然后将script1的输出(stdout,stderr)记录到文件log.txt,同时仍在我的终端上看到script1和script2的输出(正如我所看到的,没有记录功能),就像印在..

上一样

N.B。:log.txt必须准确反映我在屏幕/终端上输出的输出(stdout,stderr),对应于script1的运行。

提前感谢您的帮助。

DOPP

2 个答案:

答案 0 :(得分:1)

使用subprocess模块(不是os.system)。将stdout和stderr发送到管道并将其捕获到局部变量中(可能使用communicate)。一旦你将它们放在本地变量中,你就可以打印它们并将它们写入文件(所以你可能已经完成了大部分工作)。

类似的东西:

log = open("log.txt", "w+")
p = subprocess.Popen(['/usr/bin/env', 'python', 'script1.py'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = p.communicate()
print out,err
log.write(out)
log.write(err)

答案 1 :(得分:1)

目前python标准库中没有执行此操作的功能,但您可以使用tendo.tee()