Я написал программу, которая открывает GAP (алгебра групп и программирование) как подпроцесс и определяет четыре функции в GAP.Теперь я хочу передать команды, которые я генерирую в python, этому подпроцессу GAP, чтобы GAP оценил команды и возвратил вывод в python.
Я могу заставить GAP читать функции из файлов, но я не могу заставить его фактически читать все, что я даю ему в качестве ввода.
Я пробовал:
process.communicate(file path containing commands)
process.communicate(string of all commands)
process.stdin.write(String of a single command)
process.stdin.write(string of all commands)
GAPpath = r'C:/gap-4.10.1/bin/gap.bat'
path = os.getcwd()
mainpath = path.replace(os.sep, '/')
with open((mainpath +'/deltasetsinit.g'), 'r', -1,"UTF-8") as prelimfile: # Pull functions into a single string
prelimcode = prelimfile.read()
with open((mainpath +'/deltasetstotest.g'), 'r', -1, "UTF-8") as deltafile: # Pull tests into single string
dtests = deltafile.read() # file containing all generated commands
cmd = [GAPpath,prelimcode] # construct object containing path to GAP and the functions
#P = subprocess.run(cmd, text=True)# spawn a new process, GAP, and pass the the function string to it.
process = Popen(cmd, text=True, stdin=PIPE, stdout=PIPE)
process.communicate(dtests)
Я ожидал бы, что python будет передавать любые команды, которые он генерирует, в промежуток, а затем в промежуток, чтобы затем оценивать эти команды
Вместо этого GAP запускается и определяет все необходимые функции, а затем зависает.Программа python завершает работу после чтения любой из следующих строк:
process.communicate(file path containing commands)
process.communicate(string of all commands)
process.stdin.write(String of a single command)
process.stdin.write(string of all commands)