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文件压缩的更多相关文章

  1. python zipfile 文件压缩和文件

    文件压缩 zipfile_obj = zipfile.ZipFile(zipfile_objpath, 'a', zipfile.ZIP_DEFLATED) for dirpath, dirnames ...

  2. Python模块File文件操作

    Python模块File简介 Python提供了File模块进行文件的操作,他是Python的内置模块.我们在使用File模块的时候,必须先用Popen()函数打开一个文件,在使用结束需要close关 ...

  3. python学习shutil模块的文件压缩和解压用法

    shutil模块可以创建压缩包并返回文件路径,例如 zip,tar,下面详细其用法 base_name 压缩包的文件名,也可以是压缩包的路径,只是文件名时,则保存至当前目录,否则保存指定路径 data ...

  4. python使用zipfile递归压缩和解压缩文件

    import shutil,zipfile,os class ToolModel(object): def dfs_get_zip_file(self,input_path, result, igno ...

  5. os模块、文件压缩 、匹配文件后缀名:fnmatch glob

    一.os模块 os模块:是python是系统交互的模块 import os # 0平台信息的一些操作 python是夸平台的,所以内部兼容了不同的平台 1. os.name # 操作系统 nt是win ...

  6. python模块 zipfile

    zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的zipfile里有两个非常重要的class, 分别是ZipFile和Zip ...

  7. python模块目录文件后续

    1,新增PythonModule加载path Ruiy tip(关于python list[]数据库类型特殊你懂的!append(""),extend([""] ...

  8. Java 多个文件压缩下载

    有时候会有多个附件一起下载的需求,这个时候最好就是打包下载了 首先下面这段代码是正常的单个下载 public void Download(@RequestParam("file_path&q ...

  9. Python __init__.py 文件使用

    __init__.py的主要作用是: 1. Python中package的标识,不能删除 2. 定义__all__用来模糊导入 3. 编写Python代码(不建议在__init__中写python模块 ...

随机推荐

  1. [Swift]LeetCode264.丑数 II | Ugly Number II

    Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...

  2. [Swift]LeetCode859. 亲密字符串 | Buddy Strings

    Given two strings A and B of lowercase letters, return true if and only if we can swap two letters i ...

  3. postgresql 基础sql

    创建用户和密码:crate user 用户名 with password '密码' : 创建 alter user 用户名 with password ’密码' ; 修改用户密码 查看用户信息: se ...

  4. Node.js 多版本安装

    Node.js 多版本安装 Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine(Node.js 是一个基于 ...

  5. BBS论坛(二十)

    20.1.cms添加轮播图后台逻辑代码完成 (1)apps/models.py from exts import db from datetime import datetime class Bann ...

  6. CDN边缘节点容器调度实践(下)

    5月27日,OSC 源创会在上海成功举办.又拍云系统开发高级工程师黄励博在大会分享了<CDN 边缘节点容器调度的实践>.主要介绍又拍云自主开发的边缘节点容器调度方案,从 0 到 1 ,实现 ...

  7. PHP 扩展管理

    一直对 PHP 扩展了解的似是而非,每次安装扩展都要百度教程,很容易出现各种错误.所幸整理下管理扩展的所有操作,方便日后操作. 查看已加载的扩展 输出 phpinfo(): 使用 get_loaded ...

  8. SpringBoot+Elasticsearch

    1.  前言 1.1.  集成方式 Spring Boot中集成Elasticsearch有4种方式: REST Client Jest Spring Data Spring Data Elastic ...

  9. 模板模式之clone()方法

    clone()方法的使用,体现了模板模式的思想,常见用法可以参考:http://blog.csdn.net/zhangjg_blog/article/details/18369201

  10. .NET应用程序管理服务AMS设计

    AMS全称是Application Management Server即应用程序管理服:由于经常要写些一些应用服务,每次部署和维护都比较麻烦,首先要针对服务编写一个windows服务程序方便系统启动里 ...