用Outlook.OpenSharedItem打开带有空格的文件时出现错误

时间:2018-06-29 08:45:22

标签: python python-3.x file spyder

我得到了以下代码:

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上运行它。任何线索如何解决这个问题? 谢谢。

2 个答案:

答案 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))
相关问题