Python 如何重定向子进程';s输出到文件,同时仍打印到子流程';谁的控制台?

Python 如何重定向子进程';s输出到文件,同时仍打印到子流程';谁的控制台?,python,windows,python-2.7,Python,Windows,Python 2.7,我有一个应用程序,在这个应用程序中,我运行一个单独的Windows应用程序,它生成自己的终端。当这个单独的应用程序运行时,我可以将输出重定向到一个文件,如下所示 process = subprocess.Popen([self.app, self.app_s], stdout=subprocess.PIPE) for line in iter(process.stdout.readline, ''): print(line)

我有一个应用程序,在这个应用程序中,我运行一个单独的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()
但是,如果这样做,我将无法再打印到子流程的控制台,而只能打印到主应用程序的控制台


是否有一种方法可以在子流程的控制台中继续查看输出,同时将输出记录到文件中?

通过以下方式,您可以写入所有需要的位置

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

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

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

例如,您可以将其重定向到stderr,就像在shell中一样,如果您想将内容映射到多个目的地,您需要一个软件来读取它,然后制作额外的副本。(在通常由程序
tee
完成的shell脚本中,但由于您正在编写Python,因此当然可以使用Python代码来实现此目的。)“独立控制台”是什么意思?这是否类似于生成自己终端的Windows程序?(在UNIX世界中,一个程序从其父进程继承其标准输出描述符,因此如果父进程不重写子进程的标准输出以转到管道之类的东西,它们都会转到同一个终端/“console”/etc)。@charlesduff是的,它是一个窗口程序,生成它自己的终端。即使在管道化stdout之后,我也希望继续在该终端中输出。例如,您可以将其重定向到stderr,就像在shell中一样,如果您想将内容映射到多个目标,您需要一个软件来读取它,然后制作额外的副本。(在通常由程序
tee
完成的shell脚本中,但由于您正在编写Python,因此当然可以使用Python代码来实现此目的。)“独立控制台”是什么意思?这是否类似于生成自己终端的Windows程序?(在UNIX世界中,一个程序从其父进程继承其标准输出描述符,因此如果父进程不重写子进程的标准输出以转到管道之类的东西,它们都会转到同一个终端/“console”/etc)。@charlesduff是的,它是一个窗口程序,生成它自己的终端。我想继续在那个终端输出,即使在管道标准输出之后。