我在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分配给该重写的类的实例。但是我没有找到一种方法。