如何用python

时间:2017-01-27 07:53:07

标签: python zipfile

我试图使用ZipFile模块提取一个封闭的zip,但是:

  

“open(),read()和extract()方法可以采用文件名或ZipInfo对象。”

def ExtractZip(zipFile, path):
   zipfile.ZipFile.open(zipFile, 'r')
   zipFile.extractall(path)

这是我的代码,它返回一个错误。 (我在使用.close()运行此函数之前关闭了一个zipfile,我无法将其删除) 我该怎么做? 感谢

4 个答案:

答案 0 :(得分:1)

假设您的文件为Archive.zip

然后,执行此操作:

import zipfile
f = zipfile.ZipFile('Archive.zip')
f.extractall()

就是这样。如果要将内容放在其他位置,也可以向path提供可选的extractall参数。

可以在Python文档here中找到更多信息。

答案 1 :(得分:0)

这就是我使用zipfile访问档案的方式。

如果有一个包含这些文件的zip文件夹:

import zipfile
zippedArchive = zipfile.ZipFile('Scripts.zip')
print zippedArchive.open("Scripts/PlayPauseYouTube.scpt").read()

将打印PlayPauseYouTube.scpt文件的内容。

如果您想提取 zip存档中的所有文件,就像在其他位置一样,您可以使用zipfile.extractall

ZipFile.extractall([path[, members[, pwd]]])  
     

将存档中的所有成员解压缩到当前工作目录。 path指定要提取的其他目录。 members是可选的,必须是zipfile.namelist()返回的列表的子集。 pwd是用于加密文件的密码。

import zipfile
zippedArchive = zipfile.ZipFile('Scripts.zip')
zippedArchive.extractall()

答案 2 :(得分:0)

显然,基于所有 ZipFile 示例,您需要将存档存储在一个变量中

def ExtractZip(zipFile, path):
   archive = zipfile.ZipFile.open(zipFile, 'r')
   archive.extractall(path)

答案 3 :(得分:0)

<块引用>
  1. 这不是使用 zipfile 模块的最佳方式,尽管您的方法没有任何问题
  2. 您没有将 zipfile 对象存储在任何变量中,因此您没有访问它

你的函数应该是什么样子

import zipfile

def extract_zip(path: str):
    with zipfile.Zipfile(path) as file:
        file.extractall()

这会将 zipfile 解压缩到它所在的同一目录中。虽然这样做更好,但它使用上下文管理器,在您完成工作后会自动为您关闭文件。

如果您想将 zipfile 解压缩到另一个文件夹中

import zipfile
    
def extract_zip(path: str, extract_to: str):
    with zipfile.Zipfile(path) as file:
        file.extractall(path=extract_to)

这会将文件解压缩到您指定的文件夹中。此外,使用这种方法,您无需像默认情况下那样将模式指定为读取。