У меня есть сценарий для чтения сообщений на почтовом сервере и сохранения их в определенных папках на основе содержимого тел сообщений. Прерывистый, как правило, один или два раза в день, он не во время выполнения этой части коды:прерывистая ошибка дескриптора файла
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 дескриптор файла"), письмо не помечено для удаления и остается на сервере до тех пор, пока сохраненное вложение не будет удалено или не перемещено, после чего оба файла будут сохранены без каких-либо ошибок ,
Я в тупике от того, что может быть причиной этого, так как он обрабатывает несколько сотен писем каждый день без каких-либо проблем, за исключением этой прерывистой проблемы.
У вас есть полное сообщение об исключении или, по крайней мере, вы знаете, какая строка вызывает его? – myaut
Когда я сохраняю застигнутое исключение в файле журнала, он говорит: «[Ошибка 9] Плохой дескриптор файла». Я только что обновил код except except, чтобы увидеть, даст ли он номер строки в следующий раз, но тот факт, что один файл создается, а другой не говорит мне, что это происходит где-то между fp.close () и f = открытые (...) линии. – CCKx
Используйте модуль трассировки, чтобы получить всю совокупность ошибок. – myaut