Чем отличаются методы в pathlib: Path.rename от Path.replace
Оба метода одинаково переименовывают файл. По документации разница не ясна. Методом тыка разница тоже не обнаружена.
Ответы (2 шт):
Помогла ссылка из первого комментария.
Path.rename() гарантированно переименовывает существующий файл только в Unix.
Path.replace является кросплатформенным и переименовывает независимо от платформы.
Две версии практически одинаковых функций существуют по исторической причине, причем
Path.rename() и Path.replace() повторяют функции os.rename() и os.replace().
.rename(): в случае существования такой папки или файла зависит от операционной системы:- Windows: ошибка
OSError - POSIX системы: переименование, и за счет потери (замены в случае существования).
Возвращает
Noneдля версий Питона перед 3.8- новый объект
Pathдля версий 3.8+.
- Windows: ошибка
.replace(): всегда переименование, и за счет потери (замены в случае существования).Возвращает
Noneдля версий Питона перед 3.8- новый объект
Pathдля версий 3.8+.
Значит, лучше использовать .replace(), потому что она не зависит от операционной системы (и перед применением проверить, если папка или файл с таким именем уже не существует).