将输入捕获到subprocess.run()

时间:2018-12-17 07:10:38

标签: python python-3.x subprocess

我在Windows上有一个由他人编写的交互式命令行exe文件。当程序出现异常时,它将终止,并且我对该程序的所有输入都将丢失。

因此,我正在编写一个Python程序,该程序使用subprocess.run()调用阻塞子进程,并捕获到stdin的所有输入以进行备份,而不会影响到该子进程的交互。但是我没有找到捕获输入的方法。如何在Python中执行此操作?

示例(但不起作用)的代码如下:

import subprocess
process = subprocess.run(['program.exe'], stderr = subprocess.PIPE,text=True)

# Interact with the program. Wait for it to finish.

if subprocess_object.returncode != 0:
   open('input_backup.txt','w').write(process.stdin)  # Won't work
   open('error_backup.txt','w').write(process.stderr)

我的一个想法是重写一个StringIO对象,并给它两个流,一个sys.stdin和一个文件流到write()。然后将sys.stdin分配给该重写的类的实例。但是我没有找到一种方法。

0 个答案:

没有答案