Я конвертировал какой-то старый код Python, чтобы использовать pathlib вместо os.path для большинства связанных с 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 существует, означает, что разработчики библиотеки рассмотрели случай, когда файл может иметь несколько расширений, но я не смог найти способ просто добавить новое расширение в путь. Есть ли более идиоматический способ, который я пропустил для достижения такого же поведения?
EDIT: на самом деле path.with_suffix(path.suffix + '.res') достаточно, чтобы обрабатывать случай, когда есть уже несколько расширений файлов, хотя это было не сразу для меня очевидным.