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编码方面并不是很强大,所以不愿意这样做。
答案 0 :(得分:0)
来自docs:
将路径名路径从路径的本地语法转换为URL路径组件中使用的表单
Windows上的“本地语法”使用反斜杠,而不是正斜杠。因此,如果您通过//WDSHARESPACE
,则不会以任何方式特别处理正斜杠。
只需查看implementation即可查看实际情况。如果路径不是以驱动器号或两个反斜杠开头,则该函数只是将反斜杠转换为正向板条并引用其余部分。
另请注意文档字符串的这一部分:
不推荐用于一般用途