如何将脚本的终端日志捕获到文件中?

时间:2017-10-23 21:40:21

标签: python linux stdout stderr

我有一个python脚本,可以从Linux终端成功运行。当我运行shell script脚本时,我可以使用python将终端输出收集到文件中。

现在我想从python script本身收集终端输出。但无法这样做。

  

我想使用python仅使用shellunix脚本

进行此操作

我在python file

中完成了以下操作
class Tee(object):
    def __init__(self, f1, f2):
        self.f1, self.f2 = f1, f2
    def write(self, msg):
        self.f1.write(msg)
        self.f2.write(msg)

outfile = open('outfile', 'w')

sys.stdout = outfile
sys.stderr = Tee(sys.stderr, outfile)

python file中的这部分代码将stderrstdout打印到outfile。

如何将整个终端输出捕获到单个文件中。

2 个答案:

答案 0 :(得分:2)

如果您对pythonPATH的要求感到满意,那么我会调用另一个python进程来运行您的主脚本。

在您的顶级脚本中,使用subprocess.Popen在子进程中启动所需的脚本。然后使用subprocess.Popen.communicate()从进程获取输出流(并可能将任何命令行参数传递给进程)。

您甚至可以将所有std *输出重定向到仅使用Popen的文件,但这实际上取决于您的需求和诸如此类的东西。 communicate()似乎对您可能想要做的事情非常有用。

答案 1 :(得分:0)

您可以在代码中使用以下内容:os.system('pdv -t %s > 123.txt' % epoch_name) 你也可以看一下:Subprocess