2010-07-13 27 views
10

Hata numarasını Python'da meydana gelen bir hatadan almalıyım.Bir hata hata numarasını elde etme

Ex;

Ben çıktı almak hangi İçin
try: 
    sftp.put(local_path,target_path)  
except (IOError,OSError),errno: 
    print "Error:",errno 

,

Error: [Errno 21] Is a directory 

Ben Hata numarasını kullanmak istiyorum: Paramiko paketine aracılığıyla bir dizin aktarmaya çalışırken bir hata kodu bu parça ile yakalanır dizini ve dizin içeriklerini aktarmak için biraz daha kod girin.

cevap

13

Sorunuzu açıkladığınız için teşekkür ederiz.

Python'daki çoğu Exception s "hata numaraları" na sahip değildir.

import urllib2 
try: 
    page = urllib2.urlopen("some url") 
except urllib2.HTTPError, err: 
    if err.code == 404: 
     print "Page not found!" 
    else: 
     ... 

başka istisna (bobince tarafından belirtildiği gibi) EnvironmentError ler şunlardır: Tek istisna HTTPError istisnalar örneğin, (hayır cinas tasarlamak)

import os 
try: 
    f=open("hello") 
except IOError, err: 
    print err 
    print err.errno 
    print err.strerror 
    print err.filename 

çıkışları

[Errno 2] No such file or directory: 'hello' 
2 
No such file or directory 
hello 
+0

Tam olarak aradığım şey buydu! Teşekkürler, Tim. – fixxxer

+0

OSError için not, isteğe bağlı üçüncü bağımsız değişken olan dosya adıyla istisna için en az iki hata belirtilmedikçe, bunların tümü ** Yoktur ** (errno dahil) gibi görünüyor. –

4

Eğer errno.h hata numaraları hakkında konuşuyorsanız, onları istisna nesnesi üzerinde errno özelliğinden alabilirsiniz, ancak sadeceüzerinde(OSError, IOError ve WindowsError içerir).

Özellikle WindowsError numaralı ürünlerde, Windows'a özgü bir hata numarası ile winerror özelliği elde edersiniz. (Python, Win32 API'sini doğrudan nispeten nadiren kullandığı için bunlardan birini görmüyorsunuz.)

İlgili konular