2010-07-13 26 views
10

Tôi cần lấy số lỗi từ lỗi đã xảy ra trong Python.lấy số lỗi của một lỗi

Ví dụ: Khi cố gắng để chuyển một thư mục thông qua gói paramiko, một lỗi được bắt với đoạn mã này:

try: 
    sftp.put(local_path,target_path)  
except (IOError,OSError),errno: 
    print "Error:",errno 

Đối với mà tôi nhận được đầu ra,

Error: [Errno 21] Is a directory 

Tôi muốn sử dụng số lỗi đi vào một số mã khác để chuyển thư mục và nội dung thư mục.

Trả lời

13

Cảm ơn bạn đã làm rõ câu hỏi của mình.

Hầu hết Exception s bằng Python không có "số lỗi". Một ngoại lệ (không ý định chơi chữ) là HTTPError trường hợp ngoại lệ, ví dụ:

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

ngoại lệ khác (như ghi nhận của bobince) là EnvironmentError s:

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

đầu ra

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

Đây chính xác là những gì tôi đang tìm kiếm! Cảm ơn, Tim. – fixxxer

+0

Lưu ý cho OSError, có vẻ như đây là ** tất cả Không ** (bao gồm errno) trừ khi ít nhất hai arg được chỉ định ngoại lệ, với tên tệp là đối số thứ ba tùy chọn. –

4

Nếu bạn đang nói về số lỗi errno.h, bạn có thể lấy chúng từ thuộc tính errno trên đối tượng ngoại lệ, nhưng chỉ trên EnvironmentError (bao gồm OSError, IOErrorWindowsError).

Cụ thể trên WindowsError bạn cũng sẽ nhận được thuộc tính winerror với số lỗi cụ thể của Windows. (Bạn không thường thấy một trong những điều này mặc dù, như Python sử dụng API Win32 trực tiếp tương đối hiếm khi.)

Các vấn đề liên quan