我正在尝试创建一个脚本,该脚本在某个日期之后从某个文件夹中提取电子邮件。我有一个文本文件dateLastRan.txt,其中存储了该脚本上次运行的日期。其中的数据类似于2018-09-18。
我从文档中获取日期,并且从邮件中获取日期。我希望只输出dateLastRan之后的电子邮件,但是我的比较抱怨。是的,我是python的新手。感谢您的任何建议!
if(msgDate>dateLastRan):
TypeError: unorderable types: datetime.date() > str()
我尊重这个错误,但是如何解决呢?下面的相关代码:
import win32com.client
import datetime
import re
badUrl = []
outlook = win32com.client.Dispatch("Outlook.Application")
namespace = outlook.GetNamespace("MAPI")
your_folder = namespace.Folders.Item(1)
folder = 'ANY' #change this entry to match a folder found within Inbox
inbox = your_folder.Folders['Inbox'].Folders[folder]
dateLastRan = '1991-01-01' #used to initialize datelastran
todaysDate = (datetime.date.today()) #used to determine where to pick back up
startDate = '1991-01-01'#used to initialize startDate
#Grab Last Date Ran from file
try:
with open('lastDateRan.txt', 'r') as infile:
for date in infile:
dateLastRan = date
except Exception as err:
print ("lastDateRan.txt not found", '\n')
print("Date Last Ran = ", dateLastRan, '\n')
all_messages = inbox.Items
print("Pulling URLs from folder:",folder,'\n')
for message in all_messages:
msgDate = message.senton.date() #get date of message
print("msg date: ", msgDate)
print("datelastran: ",dateLastRan)
if(msgDate>dateLastRan): #<<<<<Comparison here
print("woot")
#do stuff
答案 0 :(得分:0)
日期类型和字符串类型无法比较。 dateLastRan ='1991-01-01'是String类型。因此,您需要转换为日期时间类型。
请参考此代码:
begin = datetime.date(2018, 9, 17) #year, month, day
end = datetime.date(2018, 9, 18)
if(begin > end):
print("False")
else:
print("True")
答案 1 :(得分:0)
所以我最终要做的是todaysDate.replace('-','')
删除破折号,然后int(todaysDate)
进行数字转换。对于我从文件中获取的日期,我不得不使用dateLastRan = re.sub('-', '', dateLastRan)
,因为.replace不可用,然后再加上int(dateLastRan)
。然后,我可以进行正确比较,仅在lastDate日期之后触摸电子邮件。
这没有考虑到一天中的时间,但是现在可以使用了。