У меня есть скрипт для чтения сообщений на почтовом сервере и сохранения их в определенных папках на основе содержимого тел сообщений. Периодически, обычно примерно один или два раза в день, происходит сбой при выполнении этой части кода:
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] Bad file descriptor»), электронное письмо не помечается для удаления и остается на сервере до тех пор, пока сохраненное вложение не будет удалено или перемещено, после чего оба файла будут сохранены без каких-либо ошибок. .
Я озадачен тем, что может быть причиной этого, так как он обрабатывает несколько сотен электронных писем каждый день без каких-либо проблем, за исключением этой прерывистой проблемы.