Select 使用 exchangelib 从电子邮件中下载的多个文件中的单个文件

Select single file from multiple downloaded file from an email using exchangelib

我是 python 的新手,在使用 exchangelib 从电子邮件下载文件后,我正在努力从 .pdf 和 Docx 中提取文本,但一种电子邮件格式有 2 个附件,我想 select只有第二个文件。


for item in recent_emails:
    for attachment in item.attachments:

        if isinstance(attachment, FileAttachment):
            file_name = str(attachment.name).replace(' ', '_')
            print(file_name)
            print(file_name[1])


output

UserPic132571557.jpg
test.java@gmail.com.doc


e

Want

test.java@gmail.com.doc

如何从一组附件结果中提取 [-1]?

您正在选择文件名字符串中的第一个元素,即文件名中的第二个字母。您想要获取 item.attachments 的第二个元素。

假设您只想获取文件附件的第二个附件,而不是任何附件,您需要先过滤列表。像这样:

file_attachments = [a for a in item.attachments if isinstance(a, FileAttachment)]
second_attachment = file_attachments[1]
# Or:
last_attachment = file_attachments[-1]

我不确定 Exchange 中的附件是否具有可靠的排序,因此您可能需要一些额外的逻辑来确保您选择了正确的附件。