2012-04-24 5 views
5

Me pregunto si Python tiene su mensaje de informe de error equivalente a $! en Perl? Cualquier persona que pueda darme una respuesta será muy apreciada.

Agregado:

example% ./test 
File "./test", line 7 
    test1 = test.Test(dir) 
^
SyntaxError: invalid syntax 

Cuando se produce la excepción, que tiene algo como esto. Si aplico try and catch block, puedo capturarlo y usar sys.exit (mensaje) para registrar el mensaje. Pero, ¿hay alguna posibilidad que puedo obtener la cadena SyntaxError: sintaxis no válida y ponerlo en mensaje

+0

No estoy seguro de lo que está preguntando, ya que nunca he hecho ninguna codificación perl. Pero [el módulo de registro de python] (http://docs.python.org/library/logging.html) puede ser de su interés – inspectorG4dget

+0

Para aquellos curiosos: Estos son los documentos sobre '$!': Http: // perldoc. perl.org/perlvar.html#Error-Variables – Cameron

+0

perl tiene la función die() donde puedes poner $! para obtener un mensaje de error del sistema –

Respuesta

8

Python generalmente utiliza excepciones para informar de errores. Si alguna operación del sistema operativo devuelve un código de error, se genera una excepción que capta en un bloque try-except. Para las operaciones del sistema operativo, eso es OSError. El errno está contenido en la instancia de excepción.

from __future__ import print_function 
import os 

try: 
     os.stat("xxx") 
except OSError as err: 
     print (err) 
     # The "err" object is on instance of OSError. It supports indexing, with the first element as the errno value. 
     print(err[0]) 

Salida:

[Errno 2] No such file or directory: 'xxx' 
2 
+3

err NO es una tupla. Es una instancia de la clase OSError que, como la mayoría de las clases de excepciones, admite la indexación. – yak

+0

@yak Tienes razón, me equivoqué. Editaré mi respuesta. – Keith

5

No hay un equivalente directo, por lo que yo soy consciente.

Python tiende a favorecer el lanzamiento de excepciones, lo que le permite acceder al mensaje de error de forma similar, aunque a través del objeto de excepción en lugar de una variable especial.

Cuestiones relacionadas