对于大多数与路径相关的操作,我将一些旧的 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')
已经足够处理已经有几个文件扩展名的情况,即使它对我来说不是很明显。