作为 Python 新手,我想遍历一个大的 mbox 文件并解析电子邮件消息。我可以使用以下代码实现:
import sys
import mailbox
def gen_summary(filename):
mbox = mailbox.mbox(filename)
for message in mbox:
subj = message['subject']
print subj
if __name__ == "__main__":
if len(sys.argv) != 2:
print 'Usage: python genarchivesum.py mbox'
sys.exit(1)
gen_summary(sys.argv[1])
但是我需要更多的控制。我需要能够获取mbox文件中给定电子邮件的起始字节位置,并且还需要获取消息的字节数(在磁盘上表示)。接下来,在将来,我需要能够寻找到给定的邮件并解析它,而不是从mbox文件的开头开始迭代(因此需要获取磁盘上的字节位置之一)。这些都是大型的mbox文件,效率是一个问题。
所有这些的目的是为了生成一个摘要文件,其中包含有关mbox中每个电子邮件的一些小细节,并且在将来能够高效地查找单个电子邮件。
mailbox
,但我刚刚阅读了help(mailbox.mbox)
。您不能使用.iterkeys()
方法获取键值的迭代器,然后使用键值查找消息吗?为什么要使用字节索引作为查找消息的键,而不是使用该模块...您是否尝试使用模块按键索引消息?如果您尝试过并且太慢或其他原因,请说明。 - steveha