我编写了以下代码来解压缩目录中的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'
请帮助解决此问题
答案 0 :(得分:0)
您应该尝试找出文件打开的内容。根据您的代码,它看起来像是在Microsoft Windows上。
我会停止工作站上的所有应用程序,包括浏览器,只打开最少数量的应用程序,然后重现问题。复制后,您可以使用工具列出对特定文件打开的所有句柄。
一个方便的实用程序是handle.exe,但请使用具有类似功能的任何工具。
找到有问题的应用程序后,您可以进一步调查文件打开的原因,并采取相应的措施。
我会小心不要关闭任何打开文件的应用程序,直到你知道这样做是安全的。