UnboundLocalError в той же функции для загрузки вложения из Outlook 2013 при запуске с другими параметрами
Я пытаюсь загрузить вложения из outlook 2013 на Windows 7. Я написал следующую функцию для него:
def attach(subject,name):
print "Execution begin"
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder("6")
all_inbox = inbox.Items
val_date = date.date.today()
print "accessing parameters"
sub_today = subject
att_today = name
for msg in all_inbox:
if msg.Subject == sub_today:
print "sub_today"
break
for attachment in msg.Attachments:
if attachment.FileName == att_today:
print "att_today"
print attachment
break
repository='C:\\Users\\tanmay.shrivastava\\Desktop\\Dashboard'
print "repository"
attachment.SaveAsFile(repository + '\\'+att_today)
print "saved"
print "Execution completed"
Я вызвал функцию с двумя разными списками: список 1 и список 2.
list1=['Hi','cr.txt']
list2=['abc Requirements','cr.txt']
Код работает, когда я вызываю его с list1.
attach(list1[0],list1[1])
но когда я вызываю его с параметрами из list2, он показывает ошибку
attach(list2[0],list2[1])
UnboundLocalError Traceback (most recent call last)
<ipython-input-12-4238cd3c2efd> in <module>()
----> 1 attach(list2[0],list2[1])
<ipython-input-2-3bb862eb2bb6> in attach(subject, name)
26 repository='C:\\Users\\tanmay.shrivastava\\Desktop\\Dashboard'
27 print "repository"
---> 28 attachment.SaveAsFile(repository + '\\'+att_today)
29 print "saved"
30 print "Execution completed"
UnboundLocalError: local variable 'attachment' referenced before assignment
Я не знаю, что вызывает это. Может ли кто-нибудь помочь мне с этим?
1 ответ
Причиной возникновения ошибки является то, что не найдено ни одного сообщения, ни вложения.
Это не вызывает ошибку, как указано в вопросе:
def attach(subject,name):
print "Execution begin"
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder("6")
all_inbox = inbox.Items
val_date = date.date.today()
print "accessing parameters"
for msg in all_inbox:
if msg.Subject == subject:
print "sub_today"
for attachment in msg.Attachments:
if attachment.FileName == name:
print "att_today"
print attachment
repository='C:\\Users\\tanmay.shrivastava\\Desktop\\Dashboard'
print "repository"
attachment.SaveAsFile(repository + '\\'+name)
print "saved"
print "Execution completed"
return True