Задать вопрос
@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)
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Они не удаляются, они все по очереди переименовываются в одно и то же имя.
Значение перемнной now определно один раз перед циклом и не меняется в цикле.
Вычисляйте новое имя тоже в цикле.
И да, всё равно это плохая идея так переименовывать.
Вы зачем-то много раз получаете текущее время для получения каждой компоненты времени.
Вы не проверяете коллизии там, где они могут быть.
Ну и да, используйте уже встроенный pathlib, сколько можно шевелить это дерьмо мамонта?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽