首页 > 解决方案 > 如何在打印到子进程控制台的同时将子进程的输出重定向到文件?

问题描述

我有一个应用程序,在这个应用程序中我运行了一个单独的 Windows 应用程序,它产生了自己的终端。当这个单独的应用程序运行时,我可以将输出重定向到一个文件,如下所示

process = subprocess.Popen([self.app, self.app_s],
                           stdout=subprocess.PIPE)

for line in iter(process.stdout.readline, ''):
   print(line)    
   file.write(line)

process.wait()

但是,如果这样做,我将无法再打印到子进程的控制台,而只能打印到主应用程序的控制台。

有没有办法我可以继续在子进程的控制台中查看输出,同时还将输出记录到文件中?

标签: pythonwindowspython-2.7

解决方案


通过以下方式,您可以写入所有您想要的地方。

process = subprocess.Popen([self.app, self.app_s],
                           stdout=subprocess.PIPE)
    
for line in proc.stdout:
        sys.stdout.write(line)
        file.write(line)

推荐阅读