为什么urlparse.urlenparse工作不一致?

时间:2013-03-20 02:39:05

标签: python urlparse

当netloc为空时,urlparse.urlunparse不一致:

>>> urlparse.urlunparse(('http','','test_path', None, None, None))
'http:///test_path'
>>> urlparse.urlunparse(('ftp','','test_path', None, None, None))
'ftp:///test_path'
>>> urlparse.urlunparse(('ssh','','test_path', None, None, None))
'ssh:test_path'

是错误还是功能? 我希望urlunparse总是表现得像第一个例子中那样,即使方案不被识别。

1 个答案:

答案 0 :(得分:3)

您传递给data的{​​{1}}元组具有以下组件:

urlunparse

如果没有scheme, netloc, url, query, fragment = data netloc不在scheme,则网址为

uses_netloc

这就是urlunparse(调用urlunsplit)的方式is defined

    url = scheme + ':' + url

请注意,def urlunsplit(data): ... scheme, netloc, url, query, fragment = data if netloc or (scheme and scheme in uses_netloc and url[:2] != '//'): if url and url[:1] != '/': url = '/' + url url = '//' + (netloc or '') + url if scheme: url = scheme + ':' + url 不在'ssh'

uses_netloc

如果您提供uses_netloc = ['ftp', 'http', 'gopher', 'nntp', 'telnet', 'imap', 'wais', 'file', 'mms', 'https', 'shttp', 'snews', 'prospero', 'rtsp', 'rtspu', 'rsync', '', 'svn', 'svn+ssh', 'sftp','nfs','git', 'git+ssh'] ,则会收到以ssh://开头的网址:

netloc