如何使用Python从附加到电子邮件的归档文件(rar或zip)中获取文件列表?也就是说,我有一个EML文件。我不需要解压缩文件只是为了得到一个列表。理论上可能的选项当附加非常大的文件和处理提取的附件可能需要大量的时间和资源。
以下是如何使用stdlib,获取存储为message.eml
:的简单多部分消息中的第一个附件
import email.parser
import StringIO
import zipfile
with open('message.eml') as f:
msg = email.parser.Parser().parse(f)
attachment = msg.get_payload(1)
zipf = StringIO.StringIO(attachment.get_payload())
zip = zipfile.ZipFile(zipf)
filenames = zip.namelist()
这将解析整个MIME信封,解码整个附件,并读取该附件的ZIP目录……但至少它不会解压缩ZIP存档中的任何文件,所以我怀疑您实际上不会有任何性能问题需要担心。
这个答案告诉如何获取文件对象(对于zip存档,使用ZipFile构造函数打开文件,而不是使用普通的open()函数)。然后您可以使用zipfile.namelist()来获取档案成员的名称