Захватывать входные данные в subprocess.run () - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть интерактивный исполняемый файл командной строки в Windows, написанный кем-то другим.Когда в программе возникает исключение, оно завершается, и все мои входные данные для программы теряются.

Итак, я пишу программу на 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 экземпляру этого переопределенного класса.Но я не нашел способа сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...