0

我正在循环浏览大型邮箱中的邮件,以将附件保存在本地文件夹中。保存大量附件后,出现以下错误:您的服务器管理员限制了您可以同时打开的项目数。

有没有办法防止这种情况?保存后,我尝试将附件设置为无,使用 message.Close(0/1) 关闭电子邮件并更改共享邮箱的缓存设置。

for message in list(messages):
    for attachment in message.Attachments:
        attachment_name = str(attachment)
        if re.search('(.xlsx|.csv|.xls)',attachment_name):
            if attachment_name in attachment_list:
                no = no+1
                attachment_name = str(no) + ' ' + attachment_name
                attachment.SaveASFile(path+ '\\' + attachment_name)
                print(attachment_name, 'saved from mail', message)
                attachment_list.append(attachment_name)
        else:
            attachment.SaveASFile(path+ '\\' + attachment_name)
            print(attachment_name, 'saved from mail', message)
            attachment_list.append(attachment_name)
        attachment.Close(1)
    else:
        pass
message.Close(1)
4

1 回答 1

1

您的服务器管理员限制了您可以同时打开的项目数量。

这是一个很好的指标,即使您已经完成了对它们的处理,您也可以在内存中保持多个 COM 对象运行。我建议及时释放所有底层对象。

Python 对象在不再引用对象时被释放。

将 obj 重新绑定到 None 会减少对对象的引用计数,del obj 也会减少。在这两种情况下,如果 obj 是对它的最后引用,则该实例将被清除。

不同之处在于之后如何使用 obj 。重新绑定保留变量(它现在绑定到 None),del 完全删除它,你会得到一个 NameError。您选择的是您的选择,它不会影响如何从内存中清除实例。

阅读更多关于Python 如何在处理后释放类对象的内存?页。

于 2022-02-17T14:53:54.430 回答