python mbox解锁不起作用

口袋g99

我正在使用此脚本从收件箱中删除邮件。

if(not debug):
  logging.debug("removing messages")
  all_mail.lock()
  for message in all_mail:
    all_mail.remove(message)
  all_mail.flush()
  all_mail.unlock()
all_mail.close()

运行此脚本一次后,我注意到/var/spool/mail. 如果我再次尝试运行脚本,我会得到一个相当可预测的异常:mailbox.ExternalClashError: dot lock unavailable

所以似乎 all_mail.unlock() 不起作用,但我不确定还能做什么。

塞尔吉·巴列斯塔

您的脚本应该引发异常,all_mail.remove(message)因为它永远不会到达unlock调用。一个mbox如从一个正常的dict重要的区别,这里是你的问题:

默认邮箱迭代器迭代消息表示,而不是像默认字典迭代器那样迭代

这意味着for message in all_mail:makemsg包含一个mboxMessage而不是一个键并且remove引发KeyError异常。

修复很简单:

for message in all_mail.iterkeys():
    all_mail.remove(message)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章