关于Python pathlib.Path:Python pathlib.Path-如何仅获得平台无关的文件分隔符作为字符串?

Python pathlib.Path - how do I get just a platform independent file separator as a string?

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

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

我搜索了pathlib文档,并在此处对此进行了回答,但是所有示例均假设我正在构建Path对象,而不是字符串。 pathlib函数将在任何字符串输出中添加正确的分隔符,但是这些是实际路径-因此它将不起作用。

除了编写诸如字符串并对其进行解析以找出分隔符之类的技巧外,还有没有办法直接获取当前正确的文件分隔符字符串?

更倾向于使用pathlib.Path而不是os或shutil软件包。

代码如下:

在构造函数中:

1
2
    self.outputdir = Path('drive:\\\\dir\\\\file')
    self.indiv_fileformatstr = str(self.outputdir) + '{}_new.m'

在最终使用的方法中:

1
    indiv_filename = Path(self.indiv_fileformatstr.format(topic))

这省去了文件分隔符


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

但是首先您可能不需要它-如果将其转换为字符串以连接文件名,则会丢失pathlib的要点。在典型用法中,分隔符字符串本身不用于连接路径组件,因为为此,pathlib会覆盖除法运算符(__truediv____rtruediv__)。同样,由于Path.parts

之类的方法,也不需要拆分。

而不是:

1
self.indiv_fileformatstr = str(self.outputdir) + '{}_new.m'

您通常会执行以下操作:

1
2
self.indiv_fileformatpath = self.outputdir / '{}_new.m'
self.indiv_fileformatstr = str(self.indiv_fileformatpath)


与平台无关的分隔符位于pathlib.os.sep