Foros del Web » Programando para Internet » Python »

Cerrar un programa.

Estas en el tema de Cerrar un programa. en el foro de Python en Foros del Web. Hola amigos, me estoy volviendo loco con una cosilla ..... quiero cerrar un archivo abierto pero no se como ! Tengo un codigo que abre ...
  #1 (permalink)  
Antiguo 15/06/2010, 10:27
Avatar de Bosc  
Fecha de Ingreso: marzo-2010
Mensajes: 43
Antigüedad: 14 años, 1 mes
Puntos: 3
Cerrar un programa.

Hola amigos,

me estoy volviendo loco con una cosilla ..... quiero cerrar un archivo abierto pero no se como ! Tengo un codigo que abre una imagen .jpg y la muestra en pantalla, pero mas adelante necesito cerrarla, y no hay manera !

Trabajo en windows, y estoy mirando modulos os, system.... pero no me sale.

He probado os.close('foto.jpg'), os.kill, hasta os.abort .... jajajja . Lo siento pero no me aclaro con la documentación para solucionar esto, se que es una pequeñez pero.... porque es tan facil abrir un archivo ( popen, exec, system...) y tan dificil cerrarlo ==????
  #2 (permalink)  
Antiguo 15/06/2010, 13:25
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cerrar un programa.

¿el código?
  #3 (permalink)  
Antiguo 15/06/2010, 16:45
Avatar de Bosc  
Fecha de Ingreso: marzo-2010
Mensajes: 43
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Cerrar un programa.

Código Python:
Ver original
  1. import os
  2. abrir1=os.popen('imagen1.jpg')
  3. pregunta=raw_input('¿Abrir nueva  foto ? S/N ')
  4. if pregunta == 'si':
  5.     abrir1.close() # antes  de abrir la 2ª imagen quiero que se cierre la 1ª
  6.     abrir2=os.popen('imagen2.jpg')
  7. else:
  8.     print 'Seleccionada imagen 1'

Algo asi, aunque este codigo es solo un proyecto, espero que se entienda lo que quiero hacer.

Última edición por Bosc; 15/06/2010 a las 16:52
  #4 (permalink)  
Antiguo 15/06/2010, 19:28
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: Cerrar un programa.

Puedes usar subprocess en lugar de os.popen es lo que recomienda la documentación, otra cosa que es un proceso abierto con popen no lo puedes cerrar hasta que termina de ejecutarse.

Igual puedes intentar con la función kill para ver si funciona. Tu código con subprocess.
Código Python:
Ver original
  1. import subprocess
  2.  
  3. p1 = subprocess.Popen(["imagen1.jpg"], shell=True)
  4. respuesta = raw_input("Abrir una nueva foto?[S/n]\n")
  5. if(respuesta and respuesta[0].lower() == "s"):
  6.     p1.kill()
  7.     p2 = subprocess.Popen(["imagen2.jpg"], shell=True)
  8. else:
  9.     print "Seleccionada imagen1"
  #5 (permalink)  
Antiguo 16/06/2010, 10:28
Avatar de Bosc  
Fecha de Ingreso: marzo-2010
Mensajes: 43
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Cerrar un programa.

Hola Razpeitia, gracias por tus ideas pero...:

- usando kill() no sucede nada, pero tampoco muestra ningun error....

tambien he probado con terminate() y sucede lo mismo.

y he hecho pruebas con algunos codigos de la documentacion, como este:

Código Python:
Ver original
  1. pipe = os.popen("imagen1.jpg")
  2. ...
  3. rc = pipe.close()
  4. if rc != None and rc % 256:
  5.     print "There were some errors"
  6. ==>
  7. process = Popen("cmd", 'w', shell=True, stdin=PIPE)
  8. ...
  9. process.stdin.close()
  10. if process.wait() != 0:
  11.     print "There were some errors"

Pero tengo mas errores que aciertos.... la imagen no se cierra , mas abajo me indica que PIPE is not defined.....

Casi que lo voy a dejar.... porque tampoco es algo imprescindible, pero no creo que sea algo tan difil.... además estaria bien saber como se hace SOLO por aprenderlo y decir: 'ahhh vale... era asi...'
  #6 (permalink)  
Antiguo 19/06/2010, 10:33
Avatar de Bosc  
Fecha de Ingreso: marzo-2010
Mensajes: 43
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Cerrar un programa.

Estoy leyendo win32api y watsup.... conoceis watsup ?? parece muy interesante , ¿que os parece esta libreria ? la usais ?

Última edición por Bosc; 22/06/2010 a las 04:37

Etiquetas: cerrar, 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 12:15.