Я никогда раньше не использовал Python, исходя из фона Javascript.
Мне нужно перебрать массив в csv и сравнить его с датой в сегодняшней переменной. Затем вернитесь туда, где срок действия каждого элемента истек или действителен. Также сколько дней осталось до истечения срока действия или сколько дней назад они истекли.
Любые указатели?
from datetime import datetime
today = datetime(2020, 5, 2)
with open('./guarantees_end.csv', 'r') as f:
for line in f.readlines():
Мои данные csv скомпилированы, как показано ниже:
2020-06-23,Flat C
2020-07-31,2 Teal Close
2020-08-14,67 Pinkers Mead
2020-08-31,3 Acacia Road
2020-04-13,1 Manor Place
Привет @dcariotti да, верно
Вы можете прочитать сегодняшнюю дату, используя:
import datetime
today = datetime.datetime.now().date()
Мой temp.csv содержит:
2020-12-11, ABCD
2020-12-23, EFGH
2020-12-01, IJKL
2020-11-11, MNOP
Для чтения из CSV вы можете использовать:
f = open('temp.csv')
csv_reader = csv.reader(f, delimiter=',')
for row in csv_reader:
product_date_str = str(row[0])
Теперь вы можете преобразовать строку даты (прочитанную из csv) в объект datetime.date, используя:
date_format = '%Y-%m-%d'
product_date = datetime.datetime.strptime(product_date_str, date_format).date()
Теперь вы можете получить разницу дат, используя:
diff = (today - product_date).days
И затем вы можете использовать этот diff для печати или отображения всего, что вы хотите. Например:
if diff > 0:
print('{} has already expired since {} days.'.format(row[1], abs(diff)))
elif diff < 0:
print('{} will expire in next {} days.'.format(row[1], abs(diff)))
else:
print('{} will expire today.'.format(row[1]))
Таким образом, полный фрагмент кода будет выглядеть так:
import csv
import datetime
today = datetime.datetime.now().date()
with open('temp.csv') as f:
csv_reader = csv.reader(f, delimiter=',')
for row in csv_reader:
product_date_str = str(row[0])
date_format = '%Y-%m-%d'
product_date = datetime.datetime.strptime(product_date_str, date_format).date()
diff = (today - product_date).days
if diff > 0:
print('{} has already expired since {} days.'.format(row[1], abs(diff)))
elif diff < 0:
print('{} will expire in next {} days.'.format(row[1], abs(diff)))
else:
print('{} will expire today.'.format(row[1]))
Спасибо. Как бы я реализовал это с датой, установленной как «сегодня = дата-время (2020, 5, 2)» Я пробовал это с этой переменной, но, похоже, это не работает. Хотя это работает с переменной ``` сегодня = datetime (2020, 5, 2) ```
Извините, но обе переменные, которые вы прокомментировали, одинаковы... Не могли бы вы исправить это и снова сообщить мне о своих сомнениях.. Вы хотите использовать пользовательскую сегодняшнюю дату? Если это так, вы можете сделать: today = datetime.datetime(2020,5,2).date(), чтобы использовать его в приведенном выше коде.
Мне удалось заставить его работать с помощью today = datetime.datetime(2020, 5, 2).date()
Я только что увидел ваш комментарий выше. Я решил это так же. Извиняюсь, что перепутал переменную. Должно быть, я дважды скопировал и вставил одну и ту же строку. спасибо за помощь
Итак, ваш вопрос касается чтения файла csv и последующего сравнения с переменной
today
?