MS Outlook CDO/MAPI блокирует вывод файла Python?

Вот пример проблемы, с которой я сталкиваюсь. Я использую расширения Python Win32 для доступа к почтовому ящику Outlook и получения сообщений.

Ниже приведен скрипт, который должен записать «hello world» в текстовый файл. Мне нужно получить несколько сообщений из почтового ящика Outlook, и я заметил кое-что странное. После того, как я один раз подключился к почтовому ящику, я больше не могу ничего печатать в файл. Вот урезанная версия, показывающая проблему:

#!/usr/bin/env python

from win32com.client import Dispatch

fh = open('foo.txt', 'w')
fh.write('hello ')
fh.close()

session = Dispatch('MAPI.session')
session.Logon('','',0,1,0,0,'exchange.foo.com\nprodreport');
session.Logoff()

fh = open('foo.txt', 'a')
fh.write('world')
fh.close()

Если я не присоединяюсь к почтовому ящику и не комментирую следующие строки, очевидно, он работает нормально:

session = Dispatch('MAPI.session')
session.Logon('','',0,1,0,0,'exchange.foo.com\ncorey');
session.Logoff()

Почему открытие сеанса почтового ящика в середине моего скрипта блокирует дальнейший вывод файла? Любые идеи? (остальные операции не блокируются, только этот файловый ввод/вывод asfaik)


person Corey Goldberg    schedule 28.01.2009    source источник


Ответы (2)



отвечая на мой собственный вопрос. похоже, что ваш рабочий каталог меняется, когда вы читаете письмо. Если вы установите его обратно, ваш файловый ввод-вывод будет работать нормально.

правильный сценарий будет выглядеть так:

#!/usr/bin/env python

import os
from win32com.client import Dispatch

fh = open('foo.txt', 'w')
fh.write('hello ')
fh.close()

cwd = os.getcwd()

session = Dispatch('MAPI.session')
session.Logon('','',0,1,0,0,'exchange.foo.com\ncorey');
session.Logoff()

os.chdir(cwd)

fh = open('foo.txt', 'a')
fh.write('world')
fh.close()
person Corey Goldberg    schedule 28.01.2009