main.py
import sys import subprocess proc = subprocess.Popen(['python', 'test.py'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) c = proc.communicate(input='John'.encode()) print(c[0].decode()) print() print(c[1].decode())
и test.py
inp = input() print("Hello, %s!" % inp)
Затея проста – делаем дочерний процесс => посылаем на стандартный ввод ему имя => процесс просто выводит его => получаем вывод процесса
Но в вывод я получаю ошибку:
Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'John' is not defined
Не могу понять из-за чего это происходит. Строка воспринимается как-то не так что ли. Естественно если тест руками запустить то все будет работать.