Не создается файл

if os.path.isfile(file_path) == True:
    old_time = (datetime.datetime.fromtimestamp(os.path.getctime(file_path)).strftime('%Y-%m-%d %H.%M.%S'))
    os.rename(f"Tasks/{user['username']}.txt", f"Tasks/old_{user['username']}_{old_time}.txt")`

введите сюда описание изображения

Если файл для пользователя уже существует, то существующий файл переименовать, добавив в него время составления этого старого отчёта в формате "old_Antonette_2020-09-23T15:25.txt"

Таким образом, актуальный отчёт всегда будет без даты в названии. Старые отчёты не удаляются, а переименовываются.

Как исправить ошибку? На третьем выполнении скрипта вылезает эта ошибка


Ответы (2 шт):

Автор решения: BADITP1

Во первых никогда не пиши:

if os.path.isfile(file_path) == True:

Isfile возвращает true или false, надо так :

if os.path.isfile(file_path):

Мелочь , но сразу говорит о твоём понимании языка и об опыте.

Как вариант , попробуй:

shutil.copy(file, new_file)

os.remove(file)
→ Ссылка
Автор решения: FotonPC

Из вашей ошибки видно что файл уже существует! Следовательно вы уже создавали файл с таким пользователем и временем! Попробуйте добавить мини-id в имя файла:

import random

# Ваш остальной код

if os.path.isfile(file_path):
    old_time = (datetime.datetime
                   .fromtimestamp(os.path.getctime(file_path))
                   .strftime('%Y-%m-%d %H.%M.%S'))
    os.rename(
        f"Tasks/{user['username']}.txt", 
        f"Tasks/old_{user['username']}_{old_time}_id{hex(random.randint(0, 2**16)}.txt"
        )

Я постарался привести хоть немного это к PEP8

→ Ссылка