У меня есть сценарий с многопользовательским вводом (с использованием функции ввода 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 в качестве ввода для первой программы.