1

私はPythonが初めてで、過去に取得できないエラーが発生しています。

件名が特定の文字列と一致する場合、私の見通しを調べて添付ファイル (Excel) を抽出するコードを作成します。コードは次のとおりです。

import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

inbox = outlook.GetDefaultFolder(6)

print "Inbox name is:", inbox.Name

messages = inbox.Items
message = messages.GetFirst ()
while message:
    if message.Subject.startswith('EOD Report'):
        attachments = message.Attachments
        if attachments.Count>=1:
            attachment = attachments.Item(1)
            filename = 'c:\Users\xx\Python\%s'%attachment
            print filename
            attachment.WriteToFile(filename)
    message = messages.GetNext()

「attachment.WriteToFile(filename)」を取り除くと、完全に正常に動作します。ただし、その特定のステートメントはエラーを生成します。

Traceback (most recent call last):
  File "C:\Users\xx\.spyder2\.temp.py", line 31, in <module>
    attachment.WriteToFile(filename)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 522, in    __getattr__
    raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: Item.WriteToFile

誰が何がうまくいかないのか手がかりを持っていますか? ありがとう

4

2 に答える 2

2

それ以外の:

attachment.WriteToFile(filename)

試す:

attachment.SaveAsFile(filename)

WriteToFileは、Exchange サーバー自体から添付ファイルを取得するときのものだと思います。

SaveAsFileは、Outlook からローカルで読み取った添付ファイルを保存する場合に使用します。

于 2013-05-24T20:51:22.210 に答える
0

AttributeError は、Item オブジェクトに WriteToFile というメソッド (または関数) がないことを示しています。

于 2013-05-24T20:24:33.773 に答える