Вы можете записывать данные в файл CSV в режиме добавления при каждом отправлении электронного письма. Это можно сделать с помощью Python [CSV module] [1]. Если файл CSV существует, прочитайте его и убедитесь, что значения еще не записаны в этот файл. Назовите файл с текущей датой. Таким образом, вы можете хранить или удалять журналы по мере необходимости. Я предполагаю, что переменными, которые вы хотите проверить, являются dfm2
и dfm3
, но вы можете заменить любые другие переменные, которые вам нужно проверить. Это хорошая идея прочитать эту ссылку, чтобы убедиться, что она настроена так, как вы хотите, чтобы она работала. Существуют и другие параметры ведения журнала, но использование CSV-файла является простым решением.
from datetime import datetime
from os import path
import csv
# your code prior to below line here
dfmerge5 = dfmerge1.loc[dfmerge1['ComparedOdds'] == 1, 'AvgOdds'].values
csv_file = f'<path to log file>/odds-log-{datetime.today().strftime("%d-%m")}.csv')
for dfm2, dfm3, dfm4, dfm5 in zip(dfmerge2, dfmerge3, dfmerge4, dfmerge5):
mail_sent = False
if path.isfile(csv_file):
with open(csv_file, 'r') as r_file:
c_reader = csv.reader(r_file)
for row in c_reader:
if dfm2 in row and dfm3 in row:
mail_sent = True
if not mail_sent:
with open(csv_file, 'a') as w_file:
c_writer = csv.writer(w_file)
c_writer.writerow([dfm2, dfm3])
dt = datetime.now()
subject = f'Overlay - {dt}'
body = f'Hi Harrison,\n\nYou have one overlay:\n\nFor {dfm2} in {dfm3}, Bet365 are displaying odds of ${dfm4}, where as the average odds are ${dfm5}.\n\nBest of luck.'
message = f'Subject: {subject}\n\n{body}'
mail = smtplib.SMTP('smtp.gmail.com', 587)
mail.ehlo()
mail.starttls()
mail.login
mail.sendmail(message)
mail.close()
[1]: https://docs.python.org/3/library/csv.html#csv.writer