当前位置: 首页 > 面试题库 >

将文件名转换为file:// URL

黄永怡
2023-03-14
问题内容

在WeasyPrint的公共API中,我接受HTML输入的文件名(除其他类型外)。任何与内置文件一起使用的文件名都可以使用open(),但是我需要将其转换为file://方案中的URL,然后再将其传递给urllib.urlopen()

(所有内容在内部都是URL形式。我需要为文档提供一个“基本URL”,以便使用来解析相对URL引用urlparse.urljoin()。)

urllib.pathname2url是一个开始:

将路径名路径从路径的本地语法转换为URL的路径组件中使用的形式。 这不会产生完整的URL。 返回值将已经使用quote()函数引用。

重点是我的,但我确实需要完整的URL。到目前为止,这似乎可行:

def path2url(path):
    """Return file:// URL from a filename."""
    path = os.path.abspath(path)
    if isinstance(path, unicode):
        path = path.encode('utf8')
    return 'file:' + urlparse.pathname2url(path)

RFC 3987(IRI)似乎建议使用UTF-8
。但是在这种情况下(URL最终将用于urllib)也许我应该使用sys.getfilesystemencoding()?

然而,根据文献,我应该在前面加上不仅仅是file:但是file://......除非我不应该:在Windows上从结果nturl2path.pathname2url()已经以三条斜线开始。

所以问题是:是否有更好的方法来做到这一点并使它跨平台?


问题答案:

为了完整起见,在Python 3.4+中,您应该执行以下操作:

import pathlib

pathlib.Path(absolute_path_string).as_uri()


 类似资料:
  • 问题内容: 如何将类路径上的文件名转换为真实文件名? 例如,假设目录位于您的类路径中。该目录中有一个文件,例如。 仅给出字符串,如何确定(运行时)info.properties文件的绝对文件路径? 结果将是类似。 为什么这有用?编写单元测试时,您可能想访问捆绑在测试资源()中的文件,但正在使用需要真实文件名而不是相对类路径引用的第三方库或其他系统。 注意:我已经亲自回答了这个问题,因为我觉得这是一

  • 问题内容: 有没有一种方法可以将其转换为: 进入这个? 我正在使用以下代码,这些代码将返回.JAR存档或/ bin目录的完整路径。 问题是,返回a ,我需要一个正常的Windows文件名。我试过添加以下内容: 而这两个回报: 返回: 请注意应将转换为空格。 有没有快速简便的方法来做到这一点? 问题答案: 当前的建议(使用JDK 1.7+)是转换URL→URI→路径。因此,要将URL转换为File,

  • 问题内容: 有什么方法可以将File对象转换为MultiPartFile?这样我就可以将该对象发送到接受接口对象的方法? 问题答案: 存在MockMultipartFile为此目的。如你的代码段中所示,如果文件路径已知,则以下代码对我有用。

  • 问题内容: 我使用APKTool对Android应用程序进行了反向工程,并获得了.Smali文件作为源代码输出。我将带有应用程序的.Smali文件转换为.Java文件。我能够成功编辑.Java文件,但现在我想将它们转换回.Smali,以便可以使用新的.Smali文件重新编译应用程序。当我只留下.Java文件时,它不会重新编译并给出一些错误。我在互联网上找不到有关将.Java编译为.Smali的任何

  • 问题内容: 我有一个,是通过致电返回的。我需要从中获取文件描述符,以便对其进行调用。从文件指针获取文件描述符的功能是什么? 问题答案: 适当的功能是。可以在中找到,它是POSIX标准,但不是标准C。

  • 问题内容: 按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我需要从现有的(X)HTML文档自动生成PDF文件。输入文件(报告)使用非常简单的基于表的布局,因此可能不需要支持真正精美的JavaScript / CSS。