2016-06-28 3 views
1

Я пишу небольшую программу, которая должна пересекать папку из файлов MSG (то есть MS Outlook) и префикс короткой строки в имена файлов , Я продолжаю работать в WindowsError: [Ошибка 32] (Процесс не может получить доступ к файлу, потому что он используется другим процессом) в строке 33 (os.rename (filenameOLD, filenameNEW)). Любая идея почему?Python, WindowsError: [Ошибка 32], файл, используемый другим процессом

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

path = 'C:\Users\MyName\Desktop\SomeFile\\' 
msgFiles = os.listdir(path) # returns list 

count = 0 
for msgFile in msgFiles: 
    count = count + 1 

    msg = outlook.OpenSharedItem(path + msgFile) 

    date = str(msg.SentOn) 

    #Extract YYYY, MM, DD, HHMMSS from .msg sent date 
    YYYY = str(20)+date.split("/")[2][:2] 
    MM = date.split("/")[1] 
    DD = date.split("/")[0] 
    HHMMSS = "".join(date.split()[1].split(":")) + "Hrs" 

    #Reformat date to valid file name  
    filenamePrefix = YYYY + DD + MM + " " + HHMMSS + " " 

    #generate new file name 
    filenameOLD = path + msgFile 
    filenameNEW = path + filenamePrefix + msgFile 

    #rename file 
    os.rename(filenameOLD, filenameNEW) 

print count, "files renamed" 
+0

Возможно ли, что файл по-прежнему открыт из 'outlook.OpenSharedItem'? – bernie

+0

Может быть. Не уверен, как закрыть его, хотя – Zengetsu

+0

Do 'del msg' после' date = str (msg.SentOn) ' – bernie

ответ

0

Вы открыли сообщение, не закрывая его. Вместо этого:

# ... 
for msgFile in msgFiles: 
    count = count + 1 

    msg = outlook.OpenSharedItem(path + msgFile) 
    date = str(msg.SentOn) 
    del msg 
# ... 
Смежные вопросы