Error en Python, sys.exit()

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

Error en Python, sys.exit()

Notapor ominae » Lun Abr 16, 2007 7:10 pm

Hola!
He empezado a estudiar un poco de PyGame y me surge siempre el mismo error con código distinto. No creo que tenga nada que ver con PyGame, mas bien parece del sys pero voy muy perdido e incluso el ejemplo de loosersjuegos llamado "ball.py" me peta.

Os copio pego el error:
Traceback (most recent call last):
File "C:\Documents and Settings\ominae\backup\Python\ball.py", line 18, in <module>
sys.exit()
SystemExit


Bueno, como podeis ver es en Windows XP, me sale el error al cerrar la ventana clickando sobre la X de la ventana. Uso Python 2.5 y PyGame 1.7.

EDITO: Solo me sale este error cuando ejecuto el código en el IDLE oficial, clickando dos veces sobre el archivo .py o usando otro entorno y ejecutando sobre este no ocurre... :shock:

Les agradezco su tiempo!!!
Un saludo
ominae
 
Mensajes: 19
Registrado: Mar Ago 22, 2006 11:17 am

RE: Error en Python, sys.exit()

Notapor hugoruscitti » Mar Abr 17, 2007 1:23 pm

Hola, he intentado reproducir el mensaje que muestras pero no lo he
conseguido, de hecho, no parece un mensaje de error sino una notificación
de la excepción que produce sys.exit(), la excepción SystemExit.

Si quieres puedes evitar ese mensaje modificando un poco el código del
ejemplo, la sentencia sys.exit() solo intenta terminar con la ejecución del
programa, lo cual podríamos reemplazar por una variable de condición llamada
'salir':

Código: Seleccionar todo
import pygame
pygame.init()

size = width, height = 320, 240
speed = [2, 2]
black = 0, 0, 0

screen = pygame.display.set_mode(size)

ball = pygame.image.load("ball.png")
ballrect = ball.get_rect()
salir = False

while not salir:
   
    for event in pygame.event.get():
   
        if event.type == pygame.QUIT:
            salir = True
       
    ballrect = ballrect.move(speed)

    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
       
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = -speed[1]

    screen.fill(black)
    screen.blit(ball, ballrect)
    pygame.display.flip()


De todas formas, con respecto al mensaje que muestra sys.exit(), te comento que
probé el programa en Debian etch (4.0) con python 2.4.4 y
pygame 1.7. La documentación del módulo 'sys' donde se indica
que la implementación emite la
señal SystemExit está en http://docs.python.org/lib/module-sys.html por si quieres
investigarlo.

Buena suerte.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor ominae » Mar Abr 17, 2007 4:13 pm

Ok, muchas gracias Hugo. Ahora estoy utilizando DrPython, que no esta nada mal y me va perfecto.

(también me he pasado a Ubuntu :lol: )

Un saludo!
ominae
 
Mensajes: 19
Registrado: Mar Ago 22, 2006 11:17 am

Yo toy igual

Notapor Shellman » Lun Nov 19, 2007 9:14 pm

Ahora a mi tambien me esta saliendo este error, coloque la variable salir para que finalize el ciclo y no ciera la ventana de ejecucion, es como si no saliera del ciclo. :?
Shellman
 
Mensajes: 16
Registrado: Mié Ene 31, 2007 5:32 pm
Ubicación: Cartagena, Colombia

Notapor ominae » Lun Nov 19, 2007 9:51 pm

sys.exit ([arg])
Salir de Python. Se implementa lanzando una excepción SystemExit, por lo que se respetan las acciones de limpieza especificadas por cláusulas finally de las sentencias try y es posible interceptar el intento de salir en un nivel más externo. El argumento opcional arg puede ser un entero que indique el estado de la salida (por omisión, cero) u otro tipo de objeto. Si es entero, el cero se considera ``final con éxito'' y cualquier valor no cero se considera ``terminación anómala'' en intérpretes de órdenes y similares. La mayoría de los sistemas requieren que el valor está en el rango 0-127 y se comprotan de manera indeterminada en caso contrario. Algunos sistemas tienen una convención para asignar significados específicos a códigos de salida concretos, pero el tema no está muy desarrollado. Los programas de Unix suelen usar 2 para errores de sintaxis de la línea de órdenes y 1 para cualquier otro error. SI se pasa cualquier otro tipo de objeto, None equivale a pasar cero y cualquier otro objeto se presenta a sys.stderr y causa un código de salida 1. En particular, sys.exit("mensaje de error") es un sistema rápido de salir de un programa cuando hay un error.


Mmm creo que lo que ocurre es que sys.exit() no solo termina el programa, si no que por lo visto también cierra el interprete python. Como dice al inicio, lanza una excepción que puede que windows interprete como un error de ejecución, de ahí el mensaje 'alarmista', pero no lo es.

Bueno jej, esta es mi interpretación...
ominae
 
Mensajes: 19
Registrado: Mar Ago 22, 2006 11:17 am

Notapor Dokan » Mar Dic 04, 2007 3:37 pm

¿esa traduccion es tuya o de alguna web?
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

Notapor hugoruscitti » Mar Dic 04, 2007 5:08 pm

Dokan escribió:¿esa traduccion es tuya o de alguna web?


Existe un proyecto de traducción al español de la documentación
de python:

http://pyspanishdoc.sourceforge.net/

esa sección de la documentación está en:

http://pyspanishdoc.sourceforge.net/lib/module-sys.html
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor Dokan » Mar Dic 04, 2007 11:32 pm

muchas gracias, no la conocía y me va a venir muy bien!!! :D :D
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron