PyInquirer с подпроцессом Popen - PullRequest
0 голосов
/ 31 января 2019

Моя цель проста, у меня есть два сценария A и B, и оба они используют PyInquirer для обработки ввода от пользователя.

Script a.py:

from PyInquirer import prompt

    def do():
        questions = [
            {
                'type': 'input',
                'name': 'inputa1',
                'message': 'inputa1',
            }
        ]
        answers = prompt(questions)

        # call b.py

        if output_from_b == 1:
            # do something AAA
        else:
            # do something BBB

    if __name__ == "__main__":
        do()

И скриптb.py почти такой же:

from PyInquirer import prompt

def do():
    questions = [
        {
            'type': 'input',
            'name': 'inputb1',
            'message': 'inputb1',
        }
    ]
    answers = prompt(questions)
    return answers["inputb1"]

if __name__ == "__main__":
    do()

Как вы можете видеть, я хочу вызвать b.py из a.py и получить пользовательский ввод из b.py, а затем продолжить в.py с выходным результатом.

Я попытался:

f = os.popen("python3 b.py")

, чтобы вызвать b.py, но получил ошибку:

Traceback (most recent call last):
  File "b.py", line 27, in <module>
    do()
  File "b.py", line 22, in do
    answers = prompt(questions)
  File "python3.7/site-packages/PyInquirer/prompt.py", line 75, in prompt
    eventloop=eventloop)
  File "python3.7/site-packages/prompt_toolkit/shortcuts.py", line 576, in run_application
    output=create_output(true_color=true_color))
  File "python3.7/site-packages/prompt_toolkit/shortcuts.py", line 126, in create_output
    ansi_colors_only=ansi_colors_only, term=term)
  File "python3.7/site-packages/prompt_toolkit/terminal/vt100_output.py", line 424, in from_pty
    assert stdout.isatty()
AssertionError

Я не уверен, где goseнеправильно или есть другой способ сделать это.

Любой совет будет оценен, спасибо:)

...