python - recorrer data frame pandas
obtener el nĂºmero de error de un error (3)
Necesito obtener el número de error de un error que ha ocurrido en Python.
Ex; Al intentar transferir un directorio a través del paquete Paramiko, se detecta un error con este fragmento de código:
try:
sftp.put(local_path,target_path)
except (IOError,OSError),errno:
print "Error:",errno
Para lo cual obtengo la salida,
Error: [Errno 21] Is a directory
Quiero utilizar el número de error para acceder a más código para transferir el directorio y el contenido del directorio.
Si está hablando de números de error errno.h
, puede obtenerlos de la propiedad errno
en el objeto de excepción, pero solo en EnvironmentError
(que incluye OSError
, IOError
y WindowsError
).
Específicamente en WindowsError
también obtendrá una propiedad winerror
con un número de error específico de Windows. (Sin embargo, a menudo no se ve uno de estos, ya que Python usa la API de Win32 directamente en raras ocasiones).
Gracias por aclarar tu pregunta.
La mayoría de las Exception
en Python no tienen "números de error". Una excepción (sin juego de palabras) son HTTPError
excepciones HTTPError
, por ejemplo:
import urllib2
try:
page = urllib2.urlopen("some url")
except urllib2.HTTPError, err:
if err.code == 404:
print "Page not found!"
else:
...
Otra excepción (según lo observado por bobince) son EnvironmentError
s:
import os
try:
f=open("hello")
except IOError, err:
print err
print err.errno
print err.strerror
print err.filename
salidas
[Errno 2] No such file or directory: ''hello''
2
No such file or directory
hello
También está el paquete errno
, que permite trabajar con códigos de error sin tener que manejar números mágicos en el código. Vea un ejemplo aquí: ¿Los números de error de Python asociados con IOError son estables?