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 中的附件是否具有可靠的排序,因此您可能需要一些额外的逻辑来确保您选择了正确的附件。
我是 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 中的附件是否具有可靠的排序,因此您可能需要一些额外的逻辑来确保您选择了正确的附件。