Могу ли я получить timedelta (days = 180) из datetime.today().strftime (‘%Y% m%d’) в python3?

#python-3.x

#python-3.x

Вопрос:

Я пишу скрипт, который перемещает файлы, имена которых начинаются с YYYYMMDD (пример 20180201, 20180203), в каталог архива, если они старше 180 дней. Этот скрипт будет запускаться каждый день из задания cron.

Таким образом, datetime.today().strftime(‘%Y%m%d’) возвращает строку, очевидно. Кажется, я не могу найти способ вернуть datetime в int.

Я мог бы сделать это: toDay = int(datetime.today().strftime(‘%Y% m%d’)) но почему-то это кажется запутанным.

Я не могу понять, какой объект datetime.timedelta (days = 180) создает.

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

1. Превращение today в строку для вас бесполезно. Вы хотите превратить имя файла в дату ( datetime.strptime() ) и вычесть это из сегодняшнего дня, чтобы увидеть, сколько ему лет.

2. Я знаю, сколько лет именам файлов. Они названы в честь YYMMDD, с которым они были созданы. Файлы уже существуют. Я не пытаюсь создавать файлы. Я пытаюсь найти те, которым более 180 дней.

Ответ №1:

Это создает timedelta объект. Вы можете добавлять и вычитать timedelta объекты с объектами типа datetime objects, чтобы создавать новые объекты со временем, измененным на эту величину.

 from datetime import datetime, timedelta

def get_date_from_filename(filename):
    return datetime.strptime(filename[:8], "%Y%m%d")

filename = "20180201file.txt"
today= datetime.today()

if get_date_from_filename(filename)   timedelta(days=180) <= today:
    print("File is 180 days old")
else:
    print("file is not that old")
  

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

1. @mr.zog У меня была опечатка в имени функции, это то, что вы имели в виду?

2. Даже с исправленной опечаткой today = я не могу запустить его как скрипт. Однажды мне удалось запустить его в ipython3. Думаю, что-то не так с моим env. Схожу с ума, изучая Python 🙂

3. @mr.zog, возможно, ему не понравилось if только с комментарием.

4. Ваша отредактированная версия теперь работает нормально, даже с опечаткой 😉 Теперь мне интересно, не ошибается ли моя конфигурация vim с пробелами.