从mbox fi中提取最后一封邮件

2024-05-08 22:38:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个mbox文件,其中包含许多电子邮件,我尝试了这个代码,通常读取所有的消息,我想要的是阅读和打印的mbox文件的最后一封电子邮件,并单独存储在另一个mbox文件。 这是我写的简单代码:

import mailbox

for msg in mailbox.mbox('C:\\Users\\hmk\Desktop\\PFE 2019\\ML\\MachineLearningPhishing-master\\MachineLearningPhishing-master\\code\\resources\\mboxfile.mbox'):
print(msg)

Tags: 文件代码inimportmaster消息for电子邮件
1条回答
网友
1楼 · 发布于 2024-05-08 22:38:13

代码有语法错误;for循环后面的行应该缩进。但实际上解决问题的办法是把它从循环中移出来。然后你只需要在循环里放点别的东西。你知道吗

import mailbox

for msg in mailbox.mbox('C:\\Users\\hmk\Desktop\\PFE 2019\\ML\\MachineLearningPhishing-master\\MachineLearningPhishing-master\\code\\resources\\mboxfile.mbox'):
    pass
# We are now outside the loop, and `msg` contains the last message
print(msg)

当然,更好的解决方法是根本不循环。你知道吗

messages = mailbox.mbox('C:\\Users\\hmk\Desktop\\PFE 2019\\ML\\MachineLearningPhishing-master\\MachineLearningPhishing-master\\code\\resources\\mboxfile.mbox')
print(messages[messages.keys()[-1]])

以上假设您使用的是Python版本,该版本足够新,可以按插入顺序对词典进行排序。如果不是的话,你可能真的需要这个循环。你知道吗

最后,可能不要硬编码绝对文件路径。使您的程序接受文件名参数,这样您就可以在任何目录中的任何mbox文件上运行它。你知道吗

import mailbox
import sys

messages = mailbox.mbox(sys.argv[1])
print(messages[messages.keys()[-1]])

就这么说吧

python3 lastmsg.py C:\Users\hmkDesktop\PFE 2019\ML\MachineLearningPhishing-master\MachineLearningPhishing-master\code\resources\mboxfile.mbox >last

显然,一个生产脚本应该有一些错误检查和帮助等,但我把它们作为练习。你知道吗

相关问题 更多 >

    热门问题