Python 2.7 Python,WindowsError:[Error 32],另一个进程正在使用该文件

Python 2.7 Python,WindowsError:[Error 32],另一个进程正在使用该文件,python-2.7,Python 2.7,我正在写一个小程序,它应该循环遍历一个包含msg文件(即MS Outlook电子邮件)的文件夹,并在文件名前加上一个短字符串。我一直在第33行(os.rename(filenameOLD,filenamew))上遇到WindowsError:[Error 32](进程无法访问该文件,因为它正被另一个进程使用)。知道为什么吗 import win32com.client outlook = win32com.client.Dispatch("Outlook.Application").GetNam

我正在写一个小程序,它应该循环遍历一个包含msg文件(即MS Outlook电子邮件)的文件夹,并在文件名前加上一个短字符串。我一直在第33行(os.rename(filenameOLD,filenamew))上遇到WindowsError:[Error 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"

您已打开邮件而未关闭它。相反,你应该:

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

    msg = outlook.OpenSharedItem(path + msgFile)
    date = str(msg.SentOn)
    del msg
# ...

文件是否仍在outlook中打开。OpenSharedItem?可能是。不知道如何关闭它,因为在
date=str(msg.SentOn)
之后插入
del-msg
就在
os.rename(filenameOLD,filenameNEW)
之前。谢谢