Nikcet
@Nikcet

(python) Почему не переименовывается файл с помощью os.rename()?

Здравствуйте.

Делаю тренировочное задание.

Задача: Создать несколько файлов с некоторым содержимым. Но если такие файлы уже есть, старые файлы переименовать(по форме) и создать новые.

Вот сама операция переименовывания файлов:
from os import mkdir, chdir, getcwd, listdir, rename
from datetime import datetime as dt
from os.path import getctime
    
if len(listdir()) > 0:
    for file in listdir():
        if not 'old_' in file:
            date = dt.fromtimestamp(getctime(file)).strftime('%Y-%m-%dT%H_%M') # <--- Дата создания файла для вставки в название файла
            new_name = f"old_{file[:-4]}_{date}.txt" # <--- Текст для нового названия файла
            try:
                rename(file, new_name) # <--- Переименовывание файла тут
            except FileExistsError:
                print(file, '- Старый вариант этого файла уже существует.')

После этого идет код создания файлов.

Проблема в том, что этот скрипт работает только один раз. Во второй раз всегда срабатывает исключение. Названия старых переименованных файлов и новые имена для новых файлов НЕ совпадают. Содержимое старых файлов и новых тоже всегда различно.

Почему не происходит переименования для новых созданных файлов?

P.s. Создание файлов происходит с помощью операции
with open("fileName.txt", "w", encoding="utf8") as data_file: 
...
  • Вопрос задан
  • 276 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mrxor
Simple is better than complex
У вас время округляется до минут при формировании имени старого файла. Запустили чаще - получили ошибку.
Ответ написан
Ваш ответ на вопрос

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

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