Документация метода pathlib.Path.replace
гласит:
Переименуйте этот файл или каталог для указанной цели. Если цель указывает на
существующий файл или каталог, он будет безоговорочно заменен.
В этом не хватает деталей. Для сравнения вот документация os.replace
:
Переименуйте файл или каталог src
в dst
. Если dst
является каталогом,
OSError
будет поднят. Если dst
существует и является файлом, он будет
заменяется молча, если у пользователя есть разрешение. Операция может потерпеть неудачу
если src
и dst
в разных файловых системах. В случае успеха
переименование будет атомарной операцией (это требование POSIX).
Важной частью является "Операция может завершиться ошибкой, если src
и dst
находятся на разных файловых системах" . В отличие от os.replace
, shutil.move
не имеет этой проблемы:
Если место назначения находится в текущей файловой системе, тогда os.rename()
используемый. В противном случае src
копируется в dst
с использованием copy_function
, а затем
удален.
Итак, какую из этих функций Path.replace
использует? Есть ли риск сбоя Path.replace
, поскольку адресат находится в другой файловой системе?