【问题标题】:How to support multiple versions of python for urllib2?urllib2如何支持多个版本的python?
【发布时间】:2012-11-17 19:32:57
【问题描述】:

我希望我的代码支持 python >= 2.5 代码使用 urllib,如下所示:

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),但我想在支持的地方明确设置超时。我的问题是如何优雅地做到这一点?我应该进行版本检查吗?

【问题讨论】:

    标签: python-2.7 urllib2 python-2.5


    【解决方案1】:

    总是有try,非常适合这种事情:

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

    (确保在第一次调用中为此使用关键字参数,否则 python 2.5 会认为您正在传递 'data' 参数。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      相关资源
      最近更新 更多