У меня есть консольное приложение, написанное на C #.Я пытаюсь автоматизировать его выполнение с помощью скрипта Python.Консольное приложение использует Console.ReadKey()
вместо Console.ReadLine()
или Console.Read()
.Я получаю исключение недопустимой операции при попытке использовать python subprocess.Popen()
В соответствии с документацией Microsoft
"Свойство In перенаправляется из потока, отличного от консоли."
Если я получу stdin
приложения, оно обнаружит, что stdin
перенаправлен из потока ввода с консоли, и выдаст исключение недопустимой операции.
Unhandled Exception: System.InvalidOperationException: Cannot read keys
when either application does not have a console or when console input has
been redirected
from a file. Try Console.Read.
at System.Console.ReadKey(Boolean intercept)
MyСценарий выглядит следующим образом
import subprocess
from subprocess import run,call,PIPE,Popen
import time
with Popen(['ConsoleProgram.exe'],stdout=PIPE,stdin=PIPE,encoding ='UTF-8') as process:
print('Writing the command')
time.sleep(5)
out,err = process.communicate('help')
if(err != None):
print('Command execution failed')
else:
print(out)
Я пытаюсь найти решение этой проблемы.Я думаю, что это возможно, потому что очень многие консольные приложения автоматизируются в скриптах Python.