间歇性错误文件描述符错误

时间:2015-03-05 17:25:20

标签: python file-descriptor imaplib

我有一个脚本来读取邮件服务器上的邮件,并根据邮件正文的内容将它们保存在特定的文件夹中。间歇性地,通常每天大约一次或两次,它在执行这部分代码时失败:

if not os.path.isfile(att_path) :
    # finally write the stuff
    fp = open(att_path, 'wb')
    fp.write(part.get_payload(decode=True))
    fp.close()
    ext = att_path.split(".")[-1]
    print "att_path",att_path
    f = open(att_path.replace("."+ext,".txt"),'wb')
    f.write(headers)
    f.write("\n\n\n")
    f.write(body)
    f.close()
    filelist.append(vdir+"/"+filename)
    messageReceived = True
else:
    noErrors = False
    errFiles.append(vdir+"/"+filename)

它将实际附件保存在预期目录中,但不保存带有标题和正文信息的后续文本文件。由于抛出异常(" [Errno 9]错误文件描述符"),电子邮件未标记为删除并保留在服务器上,直到删除或移动保存的附件,此时两个文件都将保存没有任何错误。

我对可能造成这种情况的原因感到困惑,因为它每天处理数百封电子邮件而没有任何问题,除了这个间歇性的问题。

1 个答案:

答案 0 :(得分:1)

我在使用pywin32运行的脚本中遇到了间歇性的错误描述符错误(将python作为Windows服务运行)。几乎相同的脚本(没有pywin32样板)在cmd中运行没有问题。模块回溯还指向各种打印语句,因此我注释掉了所有的打印语句,并且它有效!

如果我错了,请纠正我,我怀疑这与缺乏标准输出有关。我曾经使用print语句进行调试,但在此之后切换到了日志记录模块。