python模块--zipfile文件压缩
zipfile模块是python中一个处理压缩文件的模块,解决了不少我们平常需要处理压缩文件的需求 ,本文主要谈谈zipfile几个常用的用法。
首先我在Windows操作系统中创建如下的文件目录:

一、读取压缩文件:
代码:
import zipfile
import os
# 压缩文件路径
zip_file_path = r'F:\压缩文件zipfile\zipfile_dir.zip'
# 压缩文件目录路径
zip_dir = r'F:\压缩文件zipfile\zipfile_dir'
# 打开压缩文件
zip_files = zipfile.ZipFile(zip_file_path,mode='r')
# 获取zip压缩文件的相关信息
for content in zip_files.infolist():
print(content)
# 遍历zip压缩文件的文件名称
for name in zip_files.namelist():
print(name)
# 记得要像读取file那样关闭文件句柄
zip_files.close()

压缩文件的名称、压缩算法和大小等信息
<ZipInfo filename='zipfile_dir/test1.txt' compress_type=deflate external_attr=0x20 file_size=2918 compress_size=1591>
<ZipInfo filename='zipfile_dir/test2.txt' compress_type=deflate external_attr=0x20 file_size=2918 compress_size=1591>
<ZipInfo filename='zipfile_dir/' external_attr=0x10>
压缩文件目录下所有文件的名称
zipfile_dir/test1.txt
zipfile_dir/test2.txt
zipfile_dir/
二、往zip目录中添加文件
代码:
# 在指定zip压缩文件目录下创建zip文件
create_zip_file = zipfile.ZipFile(zip_file_path, mode='a', compression=zipfile.ZIP_DEFLATED)
new_file_path = os.path.join(zip_dir,r'README.txt')
# 将文件夹中的文件拷贝进zip目录
file_name = 'README.txt'
create_zip_file.write(new_file_path,file_name)
create_zip_file.close()
注意:加入zip目录的文件本身在文件夹中已经存在,否则zipfile模块搜索路径是无法找到的。
添加成功:

三、解压文件:
zipfile提供的压缩方法有:
ZIP_STORED,ZIP_DEFLATED, ZIP_BZIP2和ZIP_LZMA
ZIP_STOREED:只是作为一种存储,实际上并未压缩
ZIP_DEFLATED:用的是gzip压缩算法
ZIP_BZIP2:用的是bzip2压缩算法
ZIP_LZMA:用的是lzma压缩算法
gzip和bzip2压缩算法的区别:
使用 gzip要比bzip2快,但是bzip2会获得比 gzip更高的压缩率,即bzip压缩后的压缩文件跟小。
更多关于这几种算法的区别可以看这两篇篇文章:
https://www.cnblogs.com/kuang17/p/7193124.html
https://blog.csdn.net/leilonghao/article/details/73200859
代码:
# 解压后文件放置的目录
unzip_dir = r'F:\tk_demo_test'
# 解压前文件的zip目录
zip_file2_path = r'F:\tk_demo.zip'
unzip_files = zipfile.ZipFile(zip_file2_path,mode='r',compression=zipfile.ZIP_DEFLATED)
unzip_files.extractall(unzip_dir)
unzip_files.close()
解压成功:

参考文章:
https://www.cnblogs.com/kuang17/p/7193124.html
https://blog.csdn.net/leilonghao/article/details/73200859
更多内容,请参考官方文档:https://docs.python.org/3/library/zipfile.html#zipfile.ZIP_STORED
python模块--zipfile文件压缩的更多相关文章
- python zipfile 文件压缩和文件
文件压缩 zipfile_obj = zipfile.ZipFile(zipfile_objpath, 'a', zipfile.ZIP_DEFLATED) for dirpath, dirnames ...
- Python模块File文件操作
Python模块File简介 Python提供了File模块进行文件的操作,他是Python的内置模块.我们在使用File模块的时候,必须先用Popen()函数打开一个文件,在使用结束需要close关 ...
- python学习shutil模块的文件压缩和解压用法
shutil模块可以创建压缩包并返回文件路径,例如 zip,tar,下面详细其用法 base_name 压缩包的文件名,也可以是压缩包的路径,只是文件名时,则保存至当前目录,否则保存指定路径 data ...
- python使用zipfile递归压缩和解压缩文件
import shutil,zipfile,os class ToolModel(object): def dfs_get_zip_file(self,input_path, result, igno ...
- os模块、文件压缩 、匹配文件后缀名:fnmatch glob
一.os模块 os模块:是python是系统交互的模块 import os # 0平台信息的一些操作 python是夸平台的,所以内部兼容了不同的平台 1. os.name # 操作系统 nt是win ...
- python模块 zipfile
zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的zipfile里有两个非常重要的class, 分别是ZipFile和Zip ...
- python模块目录文件后续
1,新增PythonModule加载path Ruiy tip(关于python list[]数据库类型特殊你懂的!append(""),extend([""] ...
- Java 多个文件压缩下载
有时候会有多个附件一起下载的需求,这个时候最好就是打包下载了 首先下面这段代码是正常的单个下载 public void Download(@RequestParam("file_path&q ...
- Python __init__.py 文件使用
__init__.py的主要作用是: 1. Python中package的标识,不能删除 2. 定义__all__用来模糊导入 3. 编写Python代码(不建议在__init__中写python模块 ...
随机推荐
- [Swift]LeetCode174. 地下城游戏 | Dungeon Game
The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...
- C++中int与string的转化
C++中int与string的转化 int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释.缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀, ...
- linux内核中听过就能记住的概念
打算给我们部门弄个内部分享.发现大家对一些底层知识的认知停留在一句一句的,比如听说JVM使用-XX:-UseBiasedLocking取消偏向锁可以提高性能,因为它只适用于非多线程高并发应用.使用数字 ...
- 带着萌新看springboot源码03
上一节讲到了快速新建一个springboot应用,以及springboot的自动配置类起作用的时机,并且一起看了一个自动配置类的源码. 这一节我们来粗略看看当用户在浏览器输入一个url,怎么样返回一个 ...
- [工具向]__关于androidstudio工具使用过程中学习到的一些知识点简记
前言 在我学习android开发课程的过程中,我们通常只会关注编程语言上面的一些知识点与问题,而忽略了开发工具的使用上的一些遇到的一些知识,其实每一款IDE工具都是集编程语言大成而开发出来的,其中有很 ...
- ThreadLocal使用和原理简析
1. 解决共享资源冲突 对于并发工作,需要某种方式来防止两个任务同时访问相同的资源,至少在关键阶段不能出现这种冲突情况. 方法之一就是当资源被一个任务使用时,在其上加锁.第一个访问某项资源的任务必须锁 ...
- innodb是如何巧妙实现事务隔离级别
之前的文章mysql锁机制详解中我们详细讲解了innodb的锁机制,锁机制是用来保证在并发情况下数据的准确性,而要保证数据准确通常需要事务的支持,而mysql存储引擎innodb是通过锁机制来巧妙地实 ...
- C语言实现邻接矩阵创建无向图&图的深度优先遍历
/* '邻接矩阵' 实现无向图的创建.深度优先遍历*/ #include <stdio.h> #include <stdlib.h> #define MaxVex 100 // ...
- mongos-sharding连接池配置
ShardingTaskExecutorPoolMaxSize Maximum number of outbound connections each TaskExecutor connection ...
- git版本控制工具的使用
目录 git版本管理工具使用 一丶Git的下载与安装 1.windows下的git的下载与安装 2.linux下的git安装 二丶常用命令 三丶Git仓库 1.配置仓库信息 2.仓库的创建于管理 四丶 ...