【问题标题】:urlreq.pathname2url not returning enough slashes?urlreq.pathname2url 没有返回足够的斜杠?
【发布时间】:2013-09-15 18:10:25
【问题描述】:

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 编码方面不是很厉害,所以我不想这样做。

【问题讨论】:

    标签: url python-3.x urllib


    【解决方案1】:

    来自docs

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

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

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

    还要注意文档字符串的这一部分:

    不推荐用于一般用途

    【讨论】:

    • 对不起,玛塔。我一直在使用正确的反斜杠并得到了我发布的结果。我在发布我的问题时不小心输入了正斜杠。
    猜你喜欢
    • 2018-06-29
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2018-02-16
    • 2011-02-09
    相关资源
    最近更新 更多