我想阅读来自Gmail备份的一个3GB大小的.mbox文件。下面的命令可以实现:
import mailbox
mbox = mailbox.mbox(r"D:\All mail Including Spam and Trash.mbox")
for i, message in enumerate(mbox):
print("from :",message['from'])
print("subject:",message['subject'])
if message.is_multipart():
content = ''.join(part.get_payload(decode=True) for part in message.get_payload())
else:
content = message.get_payload(decode=True)
print("content:",content)
print("**************************************")
if i == 10:
break
除了前10条消息需要超过40秒外,还有更快的方法用Python访问大的.mbox文件吗?
mailbox
库将所有内容读入内存。将一个简单的mbox
解析器重写为生成器应该不难(简而言之,任何以From
开头的行都会开始一个新的消息)。 - tripleeefor message in mailbox.mbox()
并不会将所有内容读入内存。它使用生成器高效地逐个迭代消息。但是,在第一次访问时,它确实会预先填充一个小的内部TOC结构,这可能需要一些时间。 - user124114