如何在python中解压缩后删除原始文件

时间:2016-05-26 03:24:27

标签: python

我有一些python代码解压缩文件然后将其删除(原始文件),但我的代码捕获异常:它无法删除文件,因为它正在使用中。

我认为问题是当删除代码运行时,解压缩操作尚未完成,因此抛出异常。那么,如何在删除文件之前检查解压缩操作的运行状态?

file = zipfile.ZipFile(lfilename)
for filename in file.namelist():
    file.extract(filename,dir)
remove(lfilename)

3 个答案:

答案 0 :(得分:4)

ZipFile的文档说:

  

ZipFile也是一个上下文管理器,因此支持with语句。

因此,我建议您执行以下操作:

with zipfile.ZipFile(lfilename) as file:
    file.extract(filename, dir)
remove(lfilename)

使用with语句的一个优点是文件会自动关闭。它也很漂亮(简短,简洁,有效)。

另见PEP 343

答案 1 :(得分:1)

在删除文件之前尝试关闭该文件。

file = zipfile.ZipFile(lfilename)
for filename in file.namelist():
    file.extract(filename,dir)

file.close()

remove(lfilename)

答案 2 :(得分:1)

您必须先关闭该文件。

    file.close()
    remove(lfilename)

或者您可以执行以下操作:

with ZipFile('lfilename') as file:
    for filename in file.namelist():
        file.extract(filename,dir)
remove(lfilename)