Envío al stdin de un programa en python3
Tengo que archivar,main.py ychild.py.
Estoy tratando de enviar una cadena al stdin demain.py.
Este es mi código incompleto:
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
No tengo ni idea de cómo hacer esto.
Estoy ejecutando Windows 10 con Python 3.5.1
-Gracias
EDITAR: cuando estoy enviando el argumento de regreso a main.py, no puedo volver a abrir el programa. os.system vuelve a abrir el programa que no es útil en mi caso.
Estos programas son una pequeña demostración de lo que estoy tratando de hacer. En mi programa actual, no puedo hacer eso ya que los dos programas se están "comunicando" entre sí y necesitan estar abiertos en todo momento.
Lo que necesito responder es una forma de enviar un argumento a main.py tal vez usando stdin pero cuando estoy enviando mi argumento, no se puede volver a abrir el programa. Algunos ejemplos como os.system vuelven a abrir el programa, que no es lo que estoy tratando de hacer. Necesito main.py abierto en todo momento.
Tengo mi nuevo código actual que no funciona. Aparece una ventana y luego se cierra.
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()
Ese es mi código.