WinError 32:进程无法访问该文件,因为它正由另一个进程使用

时间:2018-05-18 06:53:09

标签: python python-3.x

我编写了以下代码来解压缩目录中的zip文件并删除解压缩目录中的特定excel文件:

def extractZipFiles(dest_directory):
    "This function extracts zip files in the destination directory for further processing"
    fileFullPath = dest_directory + '\\'
    extractedDirList = list()
    for file in os.listdir(dest_directory):
        dn = fileFullPath+file
        dn = re.sub(r'\.zip$', "", fileFullPath+file) #remove the trailing .zip.
        extractedDirList.append(dn)
        zf = zipfile.ZipFile(fileFullPath+file, mode='r')
        zf.extractall(dn) # extract the contents of that zip to the empty directory
        zf.close()
    return extractedDirList

def removeSelectedReports(extractedDirList):
    "This function removes the selected reports from extracted directory"
    for i in range(len(extractedDirList)):
            for filename in os.listdir(extractedDirList[i]):
                if filename.startswith("ABC_8"):
                        logger.info("File to be removed::"+filename)
                        fullPathName= "%s/%s" % (extractedDirList[i],filename)
                        os.remove(fullPathName)
    return

extractedDirList = extractZipFiles(attributionRptDestDir)
logger.info("ZIP FILES EXTRACTED:"+str(extractedDirList))
removeSelectedReports(extractedDirList)

即使我已关闭zip文件处理程序,我仍然遇到以下间歇性问题。

[WinError 32] The process cannot access the file because it is being used by another process: '\\\\share\\Workingdirectory\\report.20180517.zip'

请帮助解决此问题

1 个答案:

答案 0 :(得分:0)

您应该尝试找出文件打开的内容。根据您的代码,它看起来像是在Microsoft Windows上。

我会停止工作站上的所有应用程序,包括浏览器,只打开最少数量的应用程序,然后重现问题。复制后,您可以使用工具列出对特定文件打开的所有句柄。

一个方便的实用程序是handle.exe,但请使用具有类似功能的任何工具。

找到有问题的应用程序后,您可以进一步调查文件打开的原因,并采取相应的措施。

我会小心不要关闭任何打开文件的应用程序,直到你知道这样做是安全的。