Я конвертировал старый код Python для использования pathlib вместо os.path для большинства операций, связанных с путями, но в итоге столкнулся со следующей проблемой: мне нужно было добавить еще одно расширение к путь, у которого уже было расширение (не заменяйте его). В случае с os.path, поскольку мы просто манипулируем строками, решением было добавить расширение со строковыми операциями:
Он не работает с 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') достаточно, чтобы обработать случай, когда уже существует несколько расширений файлов, хотя для меня это не было сразу очевидно.
Подробнее здесь:
https://stackoverflow.com/questions/493 ... th-pathlib