关于这个问题已经有很多帖子了,我尝试了所有推荐的解决方案,但是它们似乎都不起作用。我想删除一个zip压缩包,但在解压后我无法删除它。
我尝试了使用os.remove
、os.unlink
以及使用with
语句等所有方法,但仍然无法删除。
WindowsError: [Error 32] The process cannot access the file because it is being used by another process:
Many thanks in advance
def Unzip(f, password, foldername):
'''
This function unzips a file, based on parameters,
it will create folders and will overwrite files with the same
name if needed.
'''
if foldername != '':
outpath = os.path.dirname(f) + '\\'+ foldername
if not os.path.exists(outpath):
os.mkdir(outpath)
else:
outpath = os.path.dirname(f)
if not os.path.exists(outpath):
os.mkdir(outpath)
if password == '':
z = zipfile.ZipFile(f)
z.extractall(outpath)
z.close()
os.unlink(f)
else:
z = zipfile.ZipFile(f)
z.extractall(outpath, None, password)
z.close()
os.unlink(f)
更新,我调整了代码,现在它可以正常工作:
z = zipfile.ZipFile(f)
z.extractall(outpath)
z.close()
del z
os.unlink(f)
if foldername:
或if not password
来简化。此外,使用os.path.join
而不是手动拼接字符串。 - deetsz.close()
和os.unlink
放置在if password...
后面来统一两个代码路径之后)在unlink之前放置了del z
,会发生什么? - deets