擅长:python、mysql、java
<p>你确定你需要叫柯尔吗?在</p>
<pre><code>import urllib2
try:
urllib2.urlopen("http://www.yahoo.com")
except urllib2.URLError as err:
print(err)
except urllib2.HTTPError as err:
print(err)
</code></pre>
<p>其次,听起来你的接口地址不可靠,而不是你的代码。检查<code> interface</code>标志参数的正确性(即:<strong>在python之外运行curl命令,并检查它是否按预期工作。</strong>)</p>
<p>一般来说,您永远无法捕获python程序中的子进程错误(我想这正是您所要求的)。您将不得不依赖于退出代码和stdout/err输出,这就是为什么依赖Python的<a href="http://docs.python.org/library/" rel="nofollow noreferrer">included batteries</a>的解决方案会更加健壮。在</p>
<p>如果需要手动指定接口,则可以使用其他几个选项:</p>
<ol>
<li><p><a href="http://pycurl.sourceforge.net/" rel="nofollow noreferrer">PyCurl</a>:</p>
<pre><code>import pycurl
import StringIO
c = pycurl.Curl()
c.setopt(pycurl.URL, "http://www.python.org/")
c.setopt(pycurl.CURLOPT_INTERFACE, "eth0")
# [...]
try:
c.perform()
except: # Handle errors here.
pass
</code></pre></li>
<li><a href="https://stackoverflow.com/questions/1150332/source-interface-with-python-and-urllib2">Change the source interface manually in python for urllib2</a></li>
</ol>