将另一个后缀添加到已经具有 pathlib 后缀的路径

新手上路,请多包涵

我正在转换一些旧的 Python 代码以使用 pathlib 而不是 os.path 对于大多数与路径相关的操作,但我最终遇到了以下问题:我需要向路径添加另一个扩展已经有一个扩展名(而不是替换它)。对于 os.path ,因为我们只是在操作字符串,所以解决方案是添加带有字符串操作的扩展:

 newpath = path + '.res'

它不适用于 pathlib.Path 因为它不允许连接任意字符。我能找到的最接近的是:

 newpath = path.with_suffix(path.suffix + '.res')

它看起来像是一种解决方法,因为它最终仍然使用字符串添加。它有一个新的陷阱,因为我一开始忘记处理已经有几个扩展并且你想添加一个新扩展的情况,导致以下代码恢复旧行为:

 newpath = path.with_suffix(''.join(path.suffixes) + '.res')

现在感觉既不简洁也不干净,因为它使用越来越多的字符串操作来实现旧行为而不是纯路径操作。 Path.suffixes 存在的事实意味着库的开发人员考虑了文件可以有多个扩展名的情况,但我找不到简单地向路径添加新扩展名的方法。是否有我错过的更惯用的方式来实现相同的行为?

编辑:实际上 path.with_suffix(path.suffix + '.res') 足以处理已经有多个文件扩展名的情况,尽管这对我来说并不是很明显。

原文由 Morwenn 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 548
1 个回答

我发现以下内容比已经给出的答案更令人满意:

 new_path = path.parent / (path.name + '.suffix')

原文由 P-Gn 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题