Считывать данные из подпроцесса в консоли Python в переменную

Всем добрый день. Подскажите, как можно решить такую проблему: У меня есть Python - файл, из которого запускается Prolog - файл. Данный Prolog - файл взаимодействует с пользователем в формате вопрос - ответ, при помощи консоли. Мне необходимо считывать эти данные с консоли, чтобы в дальнейшем передавать в интерфейс PyQT. Я не знаю как это сделать. Все примеры кода, которые я нашел, могут считывать консоль только с основного процесса, а не подпроцесса. Всем заранее спасибо за помощь, код прилагаю.

main.py

from pyswip import Prolog
p = Prolog()
p.consult("test.pl")
p.assertz("result(apple) :- apple, !")
p.assertz("result(plum) :- plum, !")
p.assertz("result(banana) :- banana, !")
p.assertz("result(unknown)")

p.assertz("apple :- verify(red_fruit)")
p.assertz("plum:- verify(blue_frukt)")
p.assertz("banana :- verify(yellow_fruit)")

print(list(p.query("result(X).")))

test.pl

/* how to ask questions */
ask(Question) :-
    %write('Please, enter yes or no You:  '),
    write(Question),
    write('? '),
    read(Response),
    nl,
    ( (Response == yes ; Response == y)
      ->
       assert(yes(Question)) ;
       assert(no(Question)), fail).

:- dynamic yes/1,no/1.

/* How to verify something */
verify(S) :-
   (yes(S)
    ->
    true ;
    (no(S)
     ->
     fail ;
     ask(S))).

/* undo all yes/no assertions */
undo :- retract(yes(_)),fail.
undo :- retract(no(_)),fail.

введите сюда описание изображения

P.S. Я оптимизировал код, как советовал пользователь Insolor, однако это тоже не работает.


Ответы (0 шт):