Отправка на стандартный номер программы в python3
У меня есть файлы,main.py а такжеchild.py.
Я пытаюсь отправить строку на стандартный вводmain.py.
Это мой неполный код:
main.pyfrom subprocess import *
import time
def main():
program = Popen(['python.exe'. 'child.py', 'start'])
while True: #waiting for'1' to be sent to the stdin
if sys.stdin == '1':
print('text)
if __name__ == '__main__':
main()
child.pyimport sys
if sys.argv[1] == 'start':
inp = input('Do you want to send the argument?\n').lower()
if inp == 'no':
sys.exit()
elif inp == 'yes':
#Somehow send '1' to the stdin of 1.py while it is running
Я понятия не имею, как это сделать.
Я бегу windows 10 с питоном 3.5.1
-Спасибо
РЕДАКТИРОВАТЬ: Когда я отправляю аргумент обратно в main.py, я не могу повторно открыть программу. os.system заново открывает программу, которая в моем случае бесполезна.
Эти программы - небольшая демонстрация того, что я пытаюсь сделать. В моей настоящей программе я не могу этого сделать, так как две программы «общаются» друг с другом, и их необходимо постоянно открывать.
Что мне нужно ответить, так это способ отправки аргумента в main.py, возможно, с использованием стандартного ввода, но когда я отправляю свой аргумент, он не может повторно открыть программу. Некоторые примеры, такие как os.system, снова открывают программу, а это не то, что я пытаюсь сделать. Мне нужно открыть main.py всегда.
У меня есть новый текущий код, который не работает. Окно всплывает и затем закрывается.
main.pyfrom subprocess import Popen, PIPE, STDOUT
x = Popen(['python.exe', '2.py', 'start'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
while x.poll() is None:
if b'Do you want to send the argument?' in x.stdout.read():
x.stdin.write(b'yes\n')
child.pyimport sys
import time
time.sleep(1)
if 1 = 1:
inp = input('Do you want to send the argument?\n').lower()
if inp == 'no':
sys.exit()
elif inp == 'yes':
sys.stdout.write('1')
sys.stdout.flush()
Это мой код.