我已经编写了一些代码来自动化一些工作,包括从特定的Outlook文件夹中提取Excel附件,将其存储在位置(文件名中带有日期时间),然后从中提取一些数据。
我使用Jupyter笔记本有完整的功能代码。但是,当我创建一个.exe(使用auto-py-to-exe)并运行时,我在特定方法SentOn上收到错误消息。有什么指示可能是什么原因?
我尝试使用限制,但是如果我没有明确输入日期和时间,则无法使用。我想使用自动定义的参数。
不起作用:
lastWk_dt = dt.timedelta(days=-7) + currentWk
lastWk = lastWk_dt.strftime("%m/%d/%Y %I:%M %p") ## convert to str and format
messages = calloutFolder.Items.restrict(f"[SentOn] > {lastWk}")
有效,但无用:
messages = calloutFolder.Items.restrict("[SentOn] > '08/13/2019 06:00 AM'")
import os
import shutil
import win32com.client
import datetime as dt
## defining timeline of data extraction
currentWk = dt.datetime.now().date()
lastWk = dt.timedelta(days=-7) + currentWk
## creating folders for storing attachments
cwd = os.getcwd()
savePath = cwd +"/"+str(currentWk)
try:
shutil.rmtree(savePath)
os.mkdir(savePath)
except OSError as e:
os.mkdir(savePath)
## reading MS Outlook subfolder called "SOME FOLDER" in inbox
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
calloutFolder = outlook.GetDefaultFolder(6).Folders["SOME FOLDER"]
messages = calloutFolder.Items
for message in messages:
if (message.Senton.date() <= currentWk) and (message.Senton.date() >= lastWk):
# source of bug, wherever I place SentOn it bugs out
attachment = message.Attachments.Item(1)
# changes message to read
message.Unread = False
## saving attachments
for attachment in message.Attachments:
attachment.SaveAsFile(os.path.join(savePath, str(attachment)))
break
预期结果是将各种Excel文件重命名并保存在位置“ savePath”中
答案 0 :(得分:0)
lastWk
是datetime.datetime对象。尝试
messages = calloutFolder.Items.restrict(f"[SentOn] > '{lastWk}'")
使用f字符串(在3.6+中可用)。否则请使用str.format()
方法。
您可能需要将lastWk
明确转换为特定格式。在这种情况下,请查看datetime.datetime.strftime()