python - Python pathlib.Path - 如何将独立于平台的文件分隔符作为字符串?
问题描述
我正在创建一个基于类不同的格式字符串,用于通过通用类方法生成文件名。我将 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
提供操作系统用来分隔路径名组件的字符。如果您真的需要它,请import os
使用os.sep
.
但是您可能一开始就不需要它 -pathlib
如果您转换为字符串以加入文件名,它就失去了意义。在典型用法中,分隔符字符串本身不用于连接路径组件,因为 pathlib为此目的覆盖了除法运算符 ( __truediv__
and )。__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 - Pandas:部分依赖图 + 一种热编码
- c# - 使用 Installshield 降级时隐藏弹出消息
- javascript - SVG 到 Gcode 转换中的错误
- ruby-on-rails - Rails,Postgres 仅显示所有搜索参数中存在的项目
- arduino-uno - 使用 I2C 将键盘与 arduino 连接
- android - 下载特定文件夹中的视频
- android - 使用 RecyclerView 的数据绑定获取 CardView 位置
- c - 为什么 max , min 和 canocalise 函数在 c 中不起作用?
- ionic-framework - 离子(ionChange)获取选定的索引
- python - 如果行仅包含停用词中的任何一个,则从文本文件中删除这些行