如何从使用Python附加到电子邮件的存档(rar或zip)中获取文件列表?也就是说,我有一个EML文件。我不需要解压缩文件只是为了得到一个列表。附加非常大的文件并处理提取的附件时,理论上可能的选项可能会花费大量的时间和资源。
答案 0 :(得分:1)
以下是如何使用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存档中的任何文件,所以我怀疑你实际上不会有任何性能问题需要担心。
答案 1 :(得分:0)
This answer告诉您如何获取文件对象(对于zip存档,使用ZipFile constructor打开文件,而不是正常的open()函数)。然后,您可以使用zipfile.namelist()获取存档成员的名称