#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 с пробелами.