【问题标题】:python mbox unlock not workingpython mbox解锁不起作用
【发布时间】:2018-02-01 23:25:19
【问题描述】:

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

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() 不起作用,但我不确定还能做什么。

【问题讨论】:

    标签: python email mbox


    【解决方案1】:

    您的脚本应该在all_mail.remove(message) 引发异常,因为它永远不会到达unlock 调用。 mbox 是与普通字典的重要区别,这是您的问题:

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

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

    修复很简单:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多