urlreq.pathname2url没有返回足够的斜杠?

时间:2013-09-15 18:10:25

标签: url python-3.x urllib

Windows 7,Python 3.3。我正在使用以下方法为共享驱动器上的文件和文件夹生成URL:

import urllib.request as urlreq
   ...
urlreq.urljoin('file:', urlreq.pathname2url(path))

如果路径以驱动器号开头,则上面会在前面添加三个斜杠并返回:

file:///Z:/foo

这正是我需要的。但如果路径以我们的网络路径“// WDSHARESPACE”(更正:“\ WDSHARESPACE”)开始,那么我就得到了

file://WDSHARESPACE/Public/foo

哪个适用于IE,但不适用于Firefox。 (Firefox想要三个斜杠,加上原来的两个),所以:

file://///WDSHARESPACE/Public/foo

有没有一种优雅的方法来实现这一目标,还是我需要测试不同的情况?我在HTML编码方面并不是很强大,所以不愿意这样做。

1 个答案:

答案 0 :(得分:0)

来自docs

  

将路径名路径从路径的本地语法转换为URL路径组件中使用的表单

Windows上的“本地语法”使用反斜杠,而不是正斜杠。因此,如果您通过//WDSHARESPACE,则不会以任何方式特别处理正斜杠。

只需查看implementation即可查看实际情况。如果路径不是以驱动器号或两个反斜杠开头,则该函数只是将反斜杠转换为正向板条并引用其余部分。

另请注意文档字符串的这一部分:

  

不推荐用于一般用途