import zipfile

# f=zipfile.ZipFile(filename, mode="r", compression=ZIP_STORED, allowZip64=False)
# filename是一个文件的路径
# mode a :追加模式
# mode r :只读模式
# mode w :写入模式
# allowZip64:是个bool型变量,当设置为True的时候就是说可以用来创建大小大于2G的zip文件,默认值是True; # 可判断是否是压缩文件:
# zipfile.is_zipfile(filename) # 将多个文件压缩成一个文件.
# with zipfile.ZipFile('test2.zip', mode='w') as zipf:
# zipf.write('a2.txt')
# zipf.write('a3.txt')
# zipf.write('a4.txt')
# zipf.write('a.txt') # 将文件解压到 abc文件内(当前文件下的abc文件)
# with zipfile.ZipFile('test.zip') as zipf:
# zipf.extractall('abc') # 获取压缩包内的文件名:
# with zipfile.ZipFile('test.zip','r') as zipf:
# for i in zipf.namelist():
# print(i) # 获取压缩包内的文件对象,可查看文件名,大小,mode
# with zipfile.ZipFile('test.zip','r') as zipf:
# for i in zipf.infolist():
# print(i)
# <ZipInfo filename='a2.txt' filemode='-rw-rw-rw-' file_size=43> # 将zip文件的目录结构打印到stdout上,包括每个文件的path,修改时间和大小
# with zipfile.ZipFile('test.zip','r') as zipf:
# zipf.printdir() # 打开压缩文件中的一个文件
# with zipfile.ZipFile('test.zip') as zipf:
# info = zipf.open("a.txt",'r')
# print(info.read())

四种压缩模式:

import zipfile"""ZIP_STORED (no compression), ZIP_DEFLATED (requires zlib),
| ZIP_BZIP2 (requires bz2) or ZIP_LZMA (requires lzma).""" # ZIP_STORED
# with zipfile.ZipFile('a.zip','w',compression=0) as z:
# z.write('a1.txt')
# z.write('a2.txt')
# z.write('a3.txt') # ZIP_LZMA
# with zipfile.ZipFile('b.zip','w',compression=zipfile.ZIP_DEFLATED) as z:
# z.write('a1.txt')
# z.write('a2.txt')
# z.write('a3.txt') # ZIP_BZIP2
# with zipfile.ZipFile('c.zip','w',compression=zipfile.ZIP_BZIP2) as z:
# z.write('a1.txt')
# z.write('a2.txt')
# z.write('a3.txt') # ZIP_LZMA
# with zipfile.ZipFile('d.zip','w',compression=zipfile.ZIP_LZMA) as z:
# z.write('a1.txt')
# z.write('a2.txt')
# z.write('a3.txt')

压缩效果:

如何压缩目录以及目录内的文件:

注意:

  直接压缩文件的目录,那么压缩内只有压缩的目录,却没目录下的文件。

这里要用到os.walk 文件遍历的方法。

top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

  • root 所指的是当前正在遍历的这个文件夹的本身的地址
  • dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
  • files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
# with zipfile.ZipFile('CC2.zip','w',compression=zipfile.ZIP_DEFLATED) as z:
# for root, dirs, files in os.walk(r".\text", topdown=False):
# for name in files:
# print(os.path.join(root, name))
# z.write(os.path.join(root, name))
os.path.join(root, name) 拼接目录下的文件路径,然后传递给zipfile.write方法保存

python - zipfile模块的更多相关文章

  1. Python ZipFile模块详解(转)

    Python zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个cl ...

  2. Python zipfile模块学习

    转载自https://www.j4ml.com/t/15270 import zipfile import os from zipfile import ZipFile class ZipManage ...

  3. python笔记之ZipFile模块

    python笔记之ZipFile模块 zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下, ...

  4. python中zipfile模块实例化解析

    文章内容由--“脚本之家“--提供,在此感谢脚本之家的贡献,该网站网址为:https://www.jb51.net/ 简介: zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是 ...

  5. Python之路(第十八篇)shutil 模块、zipfile模块、configparser模块

    一.shutil 模块 1.shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中,需要打开文件 import shutil shutil.co ...

  6. Python标准库学习之zipfile模块

    ZipFile模块里有两个非常重要的class, 分别是 ZipFile和ZipInfo. ZipFile是主要的类,用来创建和读取zip文件,而ZipInfo是存储的zip文件的每个文件的信息的. ...

  7. Python连载13-shutile模块(续)和zipfile模块

    一.shutil模块(续) 1.函数:upack_archive() (1)用法:解包操作 (2)格式:shutil.unpack_archive("归档文件地址“,”解包之后的地址“) ( ...

  8. python学习笔记之zipfile模块

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

  9. python 压缩模块大杂烩(zipfile,bz2,lzma,gzip,tarfile,zlib)

    [*] 以下压缩模块请结合python的官方文档(https://docs.python.org/3.5/library/index.html)来实践或者对比(我的是python 3.5) 1.pyt ...

随机推荐

  1. JS模块化开发(四)——构建工具gulp

    gulp.js——基于流的自动化构建工具 步骤: 1. 全局安装 gulp: $ npm install --global gulp 2. 作为项目的开发依赖(devDependencies)安装: ...

  2. Qt ------ window下工程项目打包成一个exe程序

    最近,在学习QT5的过程中,想尝试着把自己写的工程程序给打包发布出来,在任何一台windows系统都能运行,这样就不会限于电脑需不需要安装QT安装包了. 首先,先介绍自己使用的环境.我使用的QT版本是 ...

  3. day-01(html)

    本文档并非个人所写,只是方便自己参考: 案例1-网站信息展示需求: 在页面展示一些文字信息,需要排版技术分析: html:超文本标签语言////////////////////html: 作用:展示 ...

  4. 时间偏移sql

    mysql:select date_sub(str_to_date('2018/8/21','%Y/%m/%d') ,interval 90 day) ; oracle:select to_date( ...

  5. 使用Thumb

    目录 使用Thumb title: 使用Thumb tags: ARM date: 2018-10-24 19:28:32 --- 使用Thumb C文件使用编译选择增加 -mthumb即可,修改ma ...

  6. Hadoop生态圈-构建企业级平台安全方案

    Hadoop生态圈-构建企业级平台安全方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能看到这篇文章的小伙伴,估计你对大数据集群的部署对于你来说应该是手到擒来了吧.我之前分享过 ...

  7. Zookeeper+Kafka完全分布式实战部署

    Zookeeper+Kafka完全分布式实战部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实我之前部署过kafak和zookeeper的完全分布式,集群是可以正常使用没错, ...

  8. 网络编程基础【day09】:简单socket实例(二)

    本节内容 1.概述 2.socket实例 3.总结 一.概述 之前我们只是介绍了soket的概念和一些逻辑图表,下面我们来看看,socket的客户端和服务端到底是怎么用的? 二.socket实例 2. ...

  9. 获取spring上下文的bean 工具类

    有些场景我们不属于controller,service,dao,但是我们需要从spring中得到spring容器里面的bean.这时候我们需要一个类继承 ApplicationContextAware ...

  10. HTML5-语义化标签

    article -- 解释 article标签装载显示一个独立的文章内容.例如一篇完整的论坛帖子,一则网站新闻,一篇博客文章等等,一个用户评论等等 artilce可以嵌套,则内层的artilce对外层 ...