如何使用 python 提取封闭的 zip
Posted
技术标签:
【中文标题】如何使用 python 提取封闭的 zip【英文标题】:How can I extract a closed zip with python 【发布时间】:2017-01-27 07:53:07 【问题描述】:我正在尝试使用 ZipFile 模块提取一个封闭的 zip,但是:
“open()、read() 和 extract() 方法可以采用文件名或 ZipInfo 对象。”
def ExtractZip(zipFile, path):
zipfile.ZipFile.open(zipFile, 'r')
zipFile.extractall(path)
这是我的代码,它返回一个错误。 (在使用.close()
运行此功能之前,我关闭了一个压缩文件,但我无法删除它)
我该怎么做?
谢谢
【问题讨论】:
哪个python版本? 2.7 python版本 “关闭”的 ZIP 文件是什么意思? 【参考方案1】:假设你的文件是Archive.zip
:
然后,这样做:
import zipfile
f = zipfile.ZipFile('Archive.zip')
f.extractall()
就是这样。如果要将内容放在其他位置,还可以为 extractall
提供可选的 path
参数。
更多信息可以在 Python 文档here 中找到。
【讨论】:
不回答 OP 问题【参考方案2】:显然,基于所有 ZipFile 示例,您需要将存档存储在一个变量中
def ExtractZip(zipFile, path):
archive = zipfile.ZipFile.open(zipFile, 'r')
archive.extractall(path)
【讨论】:
【参考方案3】:这不是使用 zipfile 模块的最佳方式,尽管您的方法没有任何问题 您没有将 zipfile 对象存储在任何变量中,因此您没有访问它
你的函数应该是什么样子
import zipfile
def extract_zip(path: str):
with zipfile.Zipfile(path) as file:
file.extractall()
这会将 zipfile 提取到它所在的同一目录中。虽然这样做更好,因为它使用上下文管理器,在您使用完文件后会自动为您关闭文件。
如果您想将压缩文件解压缩到另一个文件夹中
import zipfile
def extract_zip(path: str, extract_to: str):
with zipfile.Zipfile(path) as file:
file.extractall(path=extract_to)
这会将文件解压缩到您指定的文件夹中。此外,使用这种方法,您不需要将模式指定为已读,因为默认情况下会这样做。
【讨论】:
【参考方案4】:这就是我使用zipfile 访问档案的方式。
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()
【讨论】:
不回答 OP 的问题以上是关于如何使用 python 提取封闭的 zip的主要内容,如果未能解决你的问题,请参考以下文章
下载一个 zip 文件并使用 Python3 将其提取到内存中
如何从 zip 中提取 csv 文件并在 python 中将其保存到磁盘? [复制]
如何使用 Python 的 zipfile 模块对 ZIP 文件中的文件设置权限(属性)?
使用 python zipfile 提取 zip 子文件夹中的文件