Python pathlib.Path - 如何获取与平台无关的文件分隔符作为字符串?

标签 python python-3.x filepath pathlib

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

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

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

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

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

代码如下:

在构造函数中:

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

在最终使用的方法中:

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

这省略了文件分隔符

最佳答案

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

但您可能一开始就不需要它 - 如果您转换为字符串以连接文件名,则它会缺少 pathlib 的要点。在典型用法中,分隔符字符串本身不用于连接路径组件,因为 pathlib 为此目的覆盖除法运算符( __truediv____rtruediv__ )。同样,由于 Path.parts 等方法,也不需要进行拆分。 .

而不是:

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

你通常会这样做:

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

关于Python pathlib.Path - 如何获取与平台无关的文件分隔符作为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58124875/

相关文章:

python - 如何解决找不到 Pyinstaller 模块错误

python - django前端运行子进程输出到浏览器窗口

python - 如何在 Tensorflow 2.0 中制作参差不齐的批处理?

python - 使用 Python 多处理加速从 Postgres 获取大表到 CSV

python - 从字符串中删除最后四位数字 - 将 Zip+4 转换为邮政编码

python - PIL 的舍入误差

python-3.x - 如何用networkx绘制平面图?

java - Scala:在 TreeView 中显示 systemDrive

filepath - SPSS中的动态文件路径

android - 在真实 Android 设备上测试应用程序时 URI 无效,但在模拟器上测试时有效