Будет ли Python «переименовать» по-прежнему пытаться переименовать файл, если оба входа одинаковы?

#python #function #rename

Вопрос:

Как правило, os.rename требует двух входных данных: «оригинального» и «нового» имени файла.

Параметры: источник: объект, подобный пути, представляющий путь к файловой системе. Это путь к исходному файлу, который необходимо переименовать. назначение: Объект, подобный пути, представляющий путь к файловой системе. src_dir_fd (необязательно): Файловый дескриптор, ссылающийся на каталог. dst_dir_fd (необязательно): Файловый дескриптор, ссылающийся на каталог.

Тип возвращаемого значения: Этот метод не возвращает никакого значения.

Итак, что происходит в следующем сценарии?

 os.rename(original, original)  

И есть ли какой-то вред, если это будет работать с большим количеством файлов?

Комментарии:

1. В системах POSIX, предполагая, что rename(2) используется системный вызов, это безопасно: «Если oldpath и newpath являются существующими жесткими ссылками, ссылающимися на один и тот же файл, то rename() ничего не делает и возвращает статус успешного выполнения».

2. В настоящее время используется Python в Windows в качестве базовой системы, доступ к диску NAS.

3. Вы пробовали создать пустой тестовый файл и запустить команду? Если нет, сделайте это. Если да, расскажите, что произошло.

4. Я не ожидал, что содержимое файлов пострадает, мне было интересно, не приводит ли это к «перезаписи» имени файла и, следовательно, ненужной записи на диск (срок службы диска). И потенциальное снижение скорости приложения, если его распространить на диск с большим количеством файлов.

5. Отслеживая пустой файл (как предложил Mad Physicist) и просматривая свойства файла, изменение имени файла приведет к обновлению «времени» доступа к файлу, но когда имя не изменяется из-за одинаковых входных данных, время доступа не обновляется.