我得到了以下代码:
import win32com.client
import os
directory = "C:/Users/mypath/"
for filename in os.listdir(directory):
_, file_extension = os.path.splitext(filename)
if file_extension == ".msg":
print(filename)
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
msg = outlook.OpenSharedItem(directory + filename)
att=msg.Attachments
for i in att:
i.SaveAsFile(os.path.join(directory, i.FileName))
del outlook, msg
此代码提取附加到.msg的文件,当我运行它时,得到以下输出:
ATP-3770289.msg ATP-5126209.msg ATP-5126317.msg ATT -1937501.msg com_error:(-2147352567,“发生了异常。”,(4096,“ Microsoft Outlook”,“我们无法打开'C://Users/omar.lopez.rubio/Desktop/admisiones/ATT%20-1937501.msg '。文件可能已经打开,或者您没有打开它的权限。\ n \ n要检查权限,请右键单击该文件夹,然后单击“属性”。“,无,0,-2147287038),无)
显然是由于
ATT -1937501.msg
有一个空格。我正在Windows的Spyder上运行它。任何线索如何解决这个问题? 谢谢。
答案 0 :(得分:0)
在运行python程序时关闭您的界面
答案 1 :(得分:0)
我处于相同的情况,在我的情况下,文件名中有空格。
Python不适用于空格。
import win32com.client
import os
path = 'C:/testes/mail'
files = [f for f in os.listdir(path) if '.msg' in f]
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('C:/testes/email_download', i.FileName))