在ValueError: unknown url type in urllib2, though the url is fine if opened in a browser中,有人指出在调用opener.open()
之前必须确保传递给它的网址格式正确(即 - 具有HTTP网址的“http://”前缀,“ftp://”用于FTP等。)
这个问题被提炼为“是否有可能使用一些内置函数自动处理此类情况,或者我必须使用后续字符串连接进行错误处理?”或者换一种方式:是否有内置的Python用于执行此操作?
然而,这个精致的问题从未得到回答,因此在这里重新提问。做自己很容易,但为什么要重新发明轮子呢?
答案 0 :(得分:3)
在Python中,接受和异常是很常见的,而不是提前检查值。所以这样的事情对我来说是完美的,可能对大多数python程序员来说都是:
try:
opener.open(url)
except ValueError,e:
# fix url and try again
# ...
但我不知道你想如何自动处理没有前缀的网址。前缀定义了要使用的协议。如果没有给出,你会如何“猜测”它?
答案 1 :(得分:0)
如果你想默认预先http://
,你真的需要自己做。没有理由认为这比预先设置更好。 gopher:
或mailto:
或news:
- 有很多协议。
仅仅因为今天的网络浏览器隐藏了用户的http://
前缀并没有使其过时。