Как обеспечить пользовательский ввод скрипта Python, внутри скрипта Python? - PullRequest
0 голосов
/ 03 мая 2019

У меня есть сценарий с многопользовательским вводом (с использованием функции ввода python), и я хочу написать еще один сценарий, который выполняет предыдущий сценарий и обеспечивает ввод для него.

Я пытался использовать модуль подпроцесса с Popen, но я получаю совершенно разные ошибки, TypeError и EOF Error.

~$ python3 importPasswords.py 

Traceback (most recent call last):

File "importPasswords.py", line 68, in <module> child.communicate(input="3")
File "/usr/lib/python3.6/subprocess.py", line 843, in communicate stdout, stderr = self._communicate(input, endtime, timeout)
File "/usr/lib/python3.6/subprocess.py", line 1499, in _communicate input_view = memoryview(self._input)
TypeError: memoryview: a bytes-like object is required, not 'str'

~$ Traceback (most recent call last):

File "PasswordGeneratorConsole.py", line 188, in <module> pgc = PasswordGeneratorConsole()
File "PasswordGeneratorConsole.py", line 20, in __init__ self.start()
File "PasswordGeneratorConsole.py", line 24, in start choice = input("What do you want to do: [1] save a password, [2] generate a new password or [3] search a password: ")
EOFError: EOF when reading a line

Строка ввода из первого файла:

choice = input("What do you want to do: [1] save a password, [2] generate a new password or [3] search a password: ")

Другой файл:

from subprocess import Popen, PIPE

p = Popen(['python3', 'PasswordGeneratorConsole.py'], stdin=PIPE, stdout=PIPE)
p.communicate("3")

Я хочу, чтобы вторая программа предоставила 3 ​​в качестве ввода для первой программы.

...