@gooooooose

После переименования файлов на Python удаляются файлы, как починить?

Задача такова: нужно переименовать все файлы в папке. Написал скрипт, вроде переименовывает, но только 1 файл, остальные удаляются. Предположил, что они удаляются из-за того, что Пайтон слишком быстро выполняет операцию, что у файлов остается одинаковое имя и одноименные фалы кроме первого удаляются, поэтому попробовал сделать паузу, не получилось.... Как починить?

import os
from datetime import datetime

from time import sleep

now = f"{datetime.now().day}.{datetime.now().month}. {datetime.now().year} {datetime.now().hour}:{datetime.now().minute}:{datetime.now().second}:{datetime.now().microsecond}"
catalog = (f'{os.path.abspath(os.curdir)}/catalog')

for root, dirs, files in os.walk("./catalog"):
    for filename in files:
        old_name = os.path.join(catalog, f"{filename}")
        new_name = os.path.join(catalog, f"{now}")
        os.rename(old_name, new_name)

        sleep(1)
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Они не удаляются, они все по очереди переименовываются в одно и то же имя.
Значение перемнной now определно один раз перед циклом и не меняется в цикле.
Вычисляйте новое имя тоже в цикле.
И да, всё равно это плохая идея так переименовывать.
Вы зачем-то много раз получаете текущее время для получения каждой компоненты времени.
Вы не проверяете коллизии там, где они могут быть.
Ну и да, используйте уже встроенный pathlib, сколько можно шевелить это дерьмо мамонта?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы