C a perror et errno, qui impriment et stockent la dernière erreur rencontrée. C'est pratique lorsque vous faites le fichier io car je n'ai pas à fstat () chaque fichier qui échoue comme argument à fopen () pour présenter à l'utilisateur la raison de l'échec de l'appel.
Je me demandais quelle est la bonne façon de saisir errno lors de la gestion gracieuse de l'exception IOError en python?
Dans [1]: fp = open ("/ notthere") -------------------------- ------------------------------------------------- IOError Traceback (dernier appel le plus récent) /Home/mugen/in () IOError: [Errno 2] Aucun fichier ou répertoire: '/notthere'[.____.[‑. _______________. _________ Dans [2]: fp = open ("test/testfile") --------- -------------------------------------------------- ---------------- IOError Traceback (dernier appel le plus récent) /Home/mugen/in () IOError: [Errno 13] Autorisation refusée: 'test/testfile' Dans [5]: essayez: .. .: fp = open ("nothere") ...: sauf IOError: ...: print "Cela a échoué pour une raison quelconque ..." ... : ...: Cela a échoué pour une raison quelconque ...
L'exception a un attribut errno
:
try:
fp = open("nothere")
except IOError as e:
print(e.errno)
print(e)
Voici comment procéder. Voir également le module errno
et os.strerror
fonction pour certains utilitaires.
import os, errno
try:
f = open('asdfasdf', 'r')
except IOError as ioex:
print 'errno:', ioex.errno
print 'err code:', errno.errorcode[ioex.errno]
print 'err message:', os.strerror(ioex.errno)
Pour plus d'informations sur les attributs IOError, consultez la classe de base EnvironmentError:
try:
fp = open("nothere")
except IOError as err:
print err.errno
print err.strerror
Différentes exceptions peuvent également être testées dans la même clause `` excepté '', par ex.
try:
serial_port.open()
except (AttributeError, SerialException) as e:
print('cannot open serial port: {}'.format(e))