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()

Python——第五章:Zipfile模块的更多相关文章

  1. Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  2. 简学Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  3. python第五周:模块、标准库

    模块相关知识: 定义:用来从逻辑上组织python代码(变量.函数.类.逻辑:实现一个功能)本质就是以.py结尾的python文件(文件名:test.py,对应的模块名:test) 附注:包:是用来从 ...

  4. python学习笔记之zipfile模块

    为什么学习: 在做自动化测试平台的apk上传功能部分时候,涉及到apk上传后提取apk的icon图标,通过aapt解析apk,获取对应icon在apk中的地址,通过python的zipfile模块来解 ...

  5. Python第五章实验报告

    一.实验项目名称:<零基础学Python>第五章实战.实例以及两道作业题 二.实验目的和要求:了解和掌握操作字符串的方法和正则表达式的应用 三.实验环境:IDLE(Python 3.9 6 ...

  6. 那些年被我坑过的Python——道阻且长(第五章实用模块讲解)

    random模块 我的随机验证吗程序: 首先保证了字母和数字出现的概率是50% VS 50%,其次是可以订制输出多少位 def Captcha(size): Captcha_list = [] for ...

  7. 流畅的python第五章一等函数学习记录

    在python中,函数是一等对象,一等对象是满足以下条件的程序实体 1在运行时创建 2能复制给变量或数据结构的元素 3能作为参数传给函数 4能作为函数的返回结果 高阶函数(接受函数作为参数或者把函数作 ...

  8. Python第五章-内置数据结构05-集合

    Python内置数据结构 五.集合(set) python 还提供了另外一种数据类型:set. set用于包含一组无序的不重复对象.所以set中的元素有点像dict的key.这是set与 list的最 ...

  9. Python第五章-内置数据结构01-字符串

    Python 内置的数据结构 ​ 到目前为止,我们如果想保存一些数据,只能通过变量.但是如果遇到较多的数据要保存,这个时候时候用变量就变的不太现实. ​ 我们需要能够保存大量数据的类似变量的东东,这种 ...

  10. Python第五章-内置数据结构04-字典

    Python 内置的数据结构 四.字典(dict) 字典也是 python 提供给我们的又一个非常重要且有用的数据结构. 字典在别的语言中有时叫关联数组.关联内存.Map等. 字典中存储的是一系列的k ...

随机推荐

  1. IDEA降低注解检测级别

    在 File | Settings | Editor | Inspections 选项中使用搜索功能找到 Autowiring for Bean Class,将 Severity 的级别由之前的 er ...

  2. 成本阶问题:财务模块axcr004合计金额检核表第18行合计金额与明细差异过大问题处理?

    财务模块axcr004合计金额检核表第18行合计金额与明细差异过大问题处理? 可能原因:生产开立工单时元件未建在生产料件BOM明细中,导致成本阶没有算到,需要手动更改成本阶. 公式: 处理办法:修改成 ...

  3. poe不能用了poe.com收费了

    Anthropic's fastest model, with strength in creative tasks. Features a context window of 9k tokens ( ...

  4. 是因为不同的浏览器内核吗--Could not register service workers到底是怎么回事

    什么是浏览器内核 浏览器内核(Rendering Engine),是浏览器最核心的部分. 它负责处理网页的HTML.CSS.JavaScript等代码,并将其转化为可视化的网页内容.即我们常说的对网页 ...

  5. gson如何序列化子类

    需求 目前有一个需求,不同对象有一些公共属性,分别也有一些不同的属性.对方传过来的json字符串中,把这些对象组成了一个数组返回过来的.这样该如何反序列化呢? 举例 定义Person类.Student ...

  6. C++ 与 QML 之间进行数据交互的几种方法

    一.属性绑定 这是最简单的方式,可以在QML中直接绑定C++ 对象的属性.通过在C++ 对象中使用Q_PROPERTY宏定义属性,然后在QML中使用绑定语法将属性与QML元素关联起来. person. ...

  7. [Python急救站课程]无角正方形

    无角正方形 from turtle import * penup() fd(-100) pendown() pensize(10) penup() seth(0) fd(20) pendown() f ...

  8. BI 数据可视化平台建设(1)—交叉表组件演变实战

    作者:vivo 互联网大数据团队 - Zhu Jianchen 本文是vivo互联网大数据团队<BI数据可视化平台建设>系列文章第1篇 - 交叉表组件. 交叉表在数据分析里应用广泛,通过本 ...

  9. 开发现代化的.NetCore控制台程序:(2)创建一个C#项目模板

    前言 上一篇文章(开发一个现代化的.NetCore控制台程序,包含依赖注入/配置/日志等要素)介绍了开发现代化的.NetCore控制台程序的细节,但这还不够,我又创建了一个脚手架模板,并命名为 Flu ...

  10. 题解 CF690C1

    题目大意: 给定一张 \(n\) 个点 \(m\) 条边的无向图,判断这是不是一棵树. 题目分析: 两种思路: 思路一: 不需要建图,直接使用并查集判环即可 最后判断一下图联不联通就行,具体方法就是看 ...