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. 异步请求 ajax的使用详解

    https://blog.csdn.net/happyaliceyu/article/details/52381446 可以说是很详细了,赞

  2. (递推)codeVs1011 && 洛谷P1028 数的计算

    题目描述 Description 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.          不 ...

  3. node.js(node.js+mongoose小案例)_实现简单的注册登录退出

    一.前言 通过node.js基本知识对node.js基本知识的一个简单应用 1.注册 2.登录 3.退出 二.基本内容 1.项目结构搭建如图所示 2.这个小案列中用到了art-template子模板以 ...

  4. C++学习之回调函数

    回调函数: 通过函数指针进行调用的函数. 回调函数不是由实现方进行调用,而是将函数指针传入,在特殊条件或者状态下进行触发调用. 譬如: 在自定义按钮控件时,当点击按钮,触发点击事件,调用指定函数. 注 ...

  5. Java基础方法整理

    方法 9.1方法概述 方法就是用来完成解决某件事情或实现某个功能的办法 可以通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(或称调用)该方法.方法,一般都有一个返回值,用来作为事情的处理 ...

  6. Ipython Notebook ipynb文件转化为Python脚本

    欢迎关注博主主页,学习python视频资源 方法1. pycharm可以打开 方法2 https://jingyan.baidu.com/article/19192ad8edc736e53e57072 ...

  7. Dream team: Stacking for combining classifiers梦之队:组合分类器

     sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  8. java io系列05之 ObjectInputStream 和 ObjectOutputStream

    本章,我们学习ObjectInputStream 和 ObjectOutputStream ObjectInputStream 和 ObjectOutputStream 介绍 ObjectInputS ...

  9. .NET获取当前程序所在电脑的CPU和内存使用率

    using System; using System.Diagnostics; using System.Text; using System.Runtime.InteropServices; nam ...

  10. PHP7 学习笔记(十二)PHPExcel vs PhpSpreadsheet and PHP_XLSXWriter

    前言 PhpSpreadsheet是PHPExcel的下一个版本. 它打破了兼容性,极大地提高了代码库的质量(命名空间,PSR合规性,使用最新的PHP语言功能等).由于所有努力都转移到了PhpSpre ...