当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总是表现得像第一个例子中那样,即使方案不被识别。
答案 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