Foros del Web » Programando para Internet » Python »

Comunicación con subproceso

Estas en el tema de Comunicación con subproceso en el foro de Python en Foros del Web. Hola, quiero hacer una transferencia de ficheros mediante tftp por python y lo que estoy intentando no hace nada... Creo que el problema es que ...
  #1 (permalink)  
Antiguo 22/11/2012, 12:56
 
Fecha de Ingreso: noviembre-2012
Ubicación: Sevilla
Mensajes: 8
Antigüedad: 11 años, 5 meses
Puntos: 0
Comunicación con subproceso

Hola, quiero hacer una transferencia de ficheros mediante tftp por python y lo que estoy intentando no hace nada... Creo que el problema es que al iniciar tftp no consigo comunicarme con el proceso.
Lo que hago es esto:
Código PHP:
comando 'tftp ' str(servidor)
p=subprocess.Popen(comandostdin=subproces.PIPEstdout=subprocess.PIPEstderr=subprocess.PIPEshelltrue)
#Hasta aqui bien, ya que el proceso se inicia
#Ahora es cuando intento comunicarme con el proceso para obtener el archivo del servidor
comando='get ' str(archivo)
p.stdin.write(comando)
p.stdin.write('quit'
servidor y archivo son pasados como argumentos desde otra parte del programa.

Supongo que el problema está en los stdin, ya que, sinceramente, no se muy bien como funciona.
Espero haberme explicado y que puedan ayudarme.
Saludos y gracias.
  #2 (permalink)  
Antiguo 23/11/2012, 22:52
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Comunicación con subproceso

No uses stdin.write en lugar de eso usa communicate ejemplo (en kill hay un warning).

Código Python:
Ver original
  1. comando = 'tftp ' + str(servidor)
  2. p=subprocess.Popen(comando, stdin=subproces.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
  3. #Hasta aqui bien, ya que el proceso se inicia
  4. #Ahora es cuando intento comunicarme con el proceso para obtener el archivo del servidor
  5. comando='get ' + str(archivo)
  6. comando_stdout = p.communicate(input=comando)[0]
  7. print comando_stdout
  8.  
  9. comando='quit'
  10. comando_stdout = p.communicate(input=comando)[0]
  11. print comando_stdout
  #3 (permalink)  
Antiguo 25/11/2012, 12:35
 
Fecha de Ingreso: noviembre-2012
Ubicación: Sevilla
Mensajes: 8
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Comunicación con subproceso

Cita:
Iniciado por razpeitia Ver Mensaje
No uses stdin.write en lugar de eso usa [URL="http://docs.python.org/2/library/subprocess.html#subprocess.Popen.communicate"]communicate[/URL] ejemplo (en [URL="http://docs.python.org/2/library/subprocess.html#subprocess.Popen.kill"]kill hay un warning[/URL]).

Código Python:
Ver original
  1. comando = 'tftp ' + str(servidor)
  2. p=subprocess.Popen(comando, stdin=subproces.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
  3. #Hasta aqui bien, ya que el proceso se inicia
  4. #Ahora es cuando intento comunicarme con el proceso para obtener el archivo del servidor
  5. comando='get ' + str(archivo)
  6. comando_stdout = p.communicate(input=comando)[0]
  7. print comando_stdout
  8.  
  9. comando='quit'
  10. comando_stdout = p.communicate(input=comando)[0]
  11. print comando_stdout
Muchas gracias, lo pruebo y ya te cuento.
Saludos!
  #4 (permalink)  
Antiguo 26/11/2012, 03:58
 
Fecha de Ingreso: noviembre-2012
Ubicación: Sevilla
Mensajes: 8
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Comunicación con subproceso

Pues me daba una excepción de I/O al hacer el quit, pero he visto que no me hace falta, ya que al terminar de hacer el get el proceso se termina, no me aparece en la lista de procesos, así que me ahorro poner el quit y evito el problema.

Gracias!

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:27.