我正在转换一些旧的 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')
足以处理已经有多个文件扩展名的情况,即使这对我来说并不是很明显。