2017-08-09 120 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的工作版本的问题安装提供了解决此问题的解决方法。