我有两个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
答案 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()
。