Я конвертировал старый код 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')
достаточно для обработки случая, когда уже есть несколько расширений файлов, хотя это не было сразу очевидно для меня.