2012-11-17 50 views
0

我想我的代碼suuport蟒蛇> = 2.5的代碼使用的urllib這樣的:如何支持多個版本的python for urllib2?

handle = urllib2.urlopen(req, timeout) 

這對於python2.6的& python2.7的python2.5,但能正常工作不支持顯式超時,所以我們必須對於這樣的插座設置默認的超時時間:

import socket 
socket.setdefaulttimeout(timeout) 
handle = urllib2.urlopen(req) 

雖然這工作得很好更高版本的Python(2.6 & 2.7),但我想在那裏支持明確設置超時時間。我的問題是如何優雅地做到這一點?我應該做一個版本檢查?

回答

1

總有try,這是非常完美了這樣的事情:

import socket 
import urllib2 

try: 
    handle = urllib2.urlopen(req, timeout = timeout) 
except TypeError: 
    socket.setdefaulttimeout(timeout) 
    handle = urllib2.urlopen(req) 

(請確保使用關鍵字參數爲這第一個呼叫,否則蟒蛇2.5會認爲你是在傳遞'數據'的說法。)