Python pathlib.Path - 如何将独立于平台的文件分隔符作为字符串?

Lig*_*tCC 5 python filepath python-3.x pathlib

我正在创建一个基于类的不同格式字符串,用于通过通用类方法生成文件名。我正在使用 Python 3.4+ pathlib.Path 模块进行面向对象的文件 I/O。

在构建此字符串时,缺少路径分隔符,我想添加一个独立于平台的文件分隔符,而不仅仅是将 Windows 版本放入。

我搜索了 pathlib 文档,并在这里回答了这个问题,但所有的例子都假设我正在构建一个 Path 对象,而不是一个字符串。pathlib 函数将在任何字符串输出中添加正确的分隔符,但这些是实际路径 - 所以它不会工作。

除了像编写字符串并解析它以找出分隔符是什么这样的hacky之外,有没有办法直接获取当前正确的文件分隔符字符串?

更喜欢使用 pathlib.Path 的答案,而不是 os 或 shutil 包。

代码如下所示:

在构造函数中:

    self.outputdir = Path('drive:\\dir\\file')
    self.indiv_fileformatstr = str(self.outputdir) + '{}_new.m'
Run Code Online (Sandbox Code Playgroud)

在最后使用的方法中:

    indiv_filename = Path(self.indiv_fileformatstr.format(topic))
Run Code Online (Sandbox Code Playgroud)

这遗漏了文件分隔符

wim*_*wim 6

pathlib提供操作系统使用的字符来分隔路径名组件的模块中没有任何公共内容。如果您确实需要它,请import os使用os.sep.

但是您可能一开始就不需要它 -pathlib如果您转换为字符串以加入文件名,它就失去了意义。在典型用法中,分隔符字符串本身不用于连接路径组件,因为为此目的,pathlib 会覆盖除法运算符 ( __truediv__and __rtruediv__)。同样,由于诸如Path.parts.

代替:

self.indiv_fileformatstr = str(self.outputdir) + '{}_new.m'
Run Code Online (Sandbox Code Playgroud)

您通常会执行以下操作:

self.indiv_fileformatpath = self.outputdir / '{}_new.m'
self.indiv_fileformatstr = str(self.indiv_fileformatpath)
Run Code Online (Sandbox Code Playgroud)