从 mbox 文件中提取最后一封邮件
Extract the last mail from a mbox file
我有一个包含许多电子邮件的 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)
您的代码有语法错误; 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
显然,生产脚本应该有一些错误检查和帮助等,但我将这些留作练习。
我有一个包含许多电子邮件的 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)
您的代码有语法错误; 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
显然,生产脚本应该有一些错误检查和帮助等,但我将这些留作练习。