Python——第五章:Zipfile模块

Zipfile模块

zipfile 模块是 Python 中用于处理 ZIP 文件的标准库模块。它提供了创建、读取和写入 ZIP 文件的功能。

zipfile 模块在写入文件时,如果要将文件写入子目录,需要在写入文件前先创建好相应的目录结构。

创建压缩包

在使用 zipfile.ZipFile 写入模式 (mode="w") 时,如果指定的目录不存在,会抛出 FileNotFoundError。因此,在执行上述代码之前,你需要确保 "zip_dir" 目录已经存在。如果目录不存在,可以使用 os.makedirs 来递归创建目录。

import zipfile
import os

# 创建目录结构
zip_dir = "zip_dir"
os.makedirs(zip_dir, exist_ok=True)

# 创建 ZIP 文件
with zipfile.ZipFile("zip_dir/abc.zip", mode="w") as zip_file:    # 路径/文件名,模式写
    zip_file.write("wf.txt")
    zip_file.write("x2.txt")


# 不用with的写法需要手动.close()
f = zipfile.ZipFile("zip_dir/abc.zip", mode="w")    # 路径/文件名,模式写
f.write("wf.txt")
f.write("x2.txt")
f.close()   # 创建后需要关闭

如何进行解压缩extractallextract

extractallextract方法会自动创建目录,所以你不需要提前建好 "zip_dir/abc" 目录。如果该目录不存在,extract 方法会自动创建它,然后将 ZIP 文件中的内容解压到该目录中。

直接全部解压缩extractall

with zipfile.ZipFile("zip_dir/abc.zip", mode="r") as zip_file:    # 路径/文件名,模式读
    zip_file.extractall("zip_dir/abc")    # /abc也是目录
    
# 不用with的写法不推荐,需要手动.close()    
f = zipfile.ZipFile("zip_dir/abc.zip", mode="r")    # 路径/文件名,模式读
f.extractall("zip_dir/abc")     # /abc也是目录
f.close()

一个一个的解压缩extract

with zipfile.ZipFile("zip_dir/abc.zip", mode="r") as zip_file:    # 路径/文件名,模式读
    for name in zip_file.namelist():
    zip_file.extract(name, "zip_dir/abc")  # /abc也是目录


# 不用with的写法不推荐,需要手动.close()
f = zipfile.ZipFile("zip_dir/abc.zip", mode="r")    # 路径/文件名,模式读
# 首先我们要用到f.namelist()函数,拿到文件名,然后用for循环去拿去名字执行解压
for name in f.namelist():
    f.extract(name, "zip_dir/abc")  # /abc也是目录
f.close()

 

posted @ 2023-12-13 18:49  Magiclala  阅读(56)  评论(0编辑  收藏  举报