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