2017-08-09 123 views
2

我試圖下載一些位於文件夾(不是特定於Outlook)中的.msg文件的附件。使用python保存.msg文件的附件

import win32com.client 
import os 
path = 'C:\\Users\\my_messages\\' 
files = [f for f in os.listdir(path) if '.msg' in f] 
print files 
for file in files: 
    outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") 
    msg = outlook.OpenSharedItem(os.path.join(path, file)) 
    att=msg.Attachments 
    for i in att: 
     i.SaveAsFile(os.path.join(path, i.FileName)) 

我不斷收到此錯誤,這使我相信,win32com庫有問題。任何幫助深表感謝。

IOError: [Errno 2] No such file or directory: u'C:\\Python27\\lib\\site-packages\\win32com\\gen_py\\00062FFF-0000-0000-C000-000000000046x0x9x6\\ItemEvents.py.temp' 

該線路上時,將生成錯誤:

msg = outlook.OpenSharedItem(os.path.join(path, file)) 
+0

你有沒有考慮任何現有的解決方案,如https://github.com/mattgwwalker/msg-extractor而不是自己寫?如果沒有別的,你至少可以看看他們是如何做到的。 –

+0

謝謝,我試着用'python ExtractMsg.py example.msg'的例子,但得到錯誤:'無法打開'ExtractMsg'文件:[Errno 2]沒有這樣的文件或目錄。如果我運行'Import ExtractMsg',我沒有問題。也許我只需要挖掘圖書館的代碼。 – user2242044

+0

對於使用'Anaconda'安裝的'Python 3.6.0',它工作得很好。你是如何安裝'win32com'庫的? – Adonis

回答

0

這裏的問題是與該庫的Python一個問題是使用,具體表現爲:

  • pypiwin32(更具體地呼叫outlook.OpenSharedItem)在Python2.7上全新安裝
  • OP設法讓它在copyin後工作克來自工作庫文件夾(site-packages\win32com)安裝到他的原(故障)安裝將需要

更多的調查有一個更清晰的答案,至少複製庫win32com的工作版本的問題安裝提供瞭解決此問題的解決方法。