我正在转换一些旧的 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 许可协议
我发现以下内容比已经给出的答案更令人满意: