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
Другие вопросы по тегам