Automate the Boring Stuff 学习笔记 02

Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作。要进行相关操作,首先需要实例化一个 ZipFile 对象。ZipFile 接受一个字符串格式压缩包名称作为它的必选参数,第二个参数为可选参数,表示打开模式,类似于文件操作,有r/w/a三种模式,分别代表读、写、添加,默认为r,即读模式。

1. zip 文件查看

假设当前有如下文件结构:

代码演示如下:

>>> import zipfile, os
>>> os.chdir(‘C:\\’) # move to the folder with example.zip
>>> exampleZip = zipfile.ZipFile(‘example.zip’)
>>> exampleZip.namelist()
[‘spam.txt’, ‘cats/’, ‘cats/catnames.txt’, ‘cats/zophie.jpg’]
>>> spamInfo = exampleZip.getinfo(‘spam.txt’)
>>> spamInfo.file_size
13908
>>> spamInfo.compress_size
3828
>>> ‘Compressed file is %sx smaller!’ % (round(spamInfo.file_size / spamInfo
.compress_size, 2))
‘Compressed file is 3.63x smaller!’
>>> exampleZip.close()

如上代码所示,ZipFile 对象拥有一个名为 namelist() 的方法,该方法返回一个所含该压缩包所有文件及文件夹的字符串列表。可以把返回的列表中的字符串传递到 getinfo() 方法中,以获取特定文件或文件夹的更多信息。getinfo() 方法还拥有以下属性:

  • file_size 可获得原文件或文件夹大小
  • compress_size 或获得压缩后的文件或文件夹大小

2. zip文件解压

利用 ZipFile 对象的 extractall() 方法可以对整个压缩包进行解压。extractall() 方法接受一个绝对路径名称字符串为可选参数,解压后的文件将会入在传入的目录中。示例代码如下:

>>> import zipfile, os
>>> os.chdir(‘C:\\’) # move to the folder with example.zip
>>> exampleZip = zipfile.ZipFile(‘example.zip’)
>>> exampleZip.extractall()
>>> exampleZip.close()

上例中,extractall() 方法没有被传入参数,因为文件被解压到当前的工作目录中。如果被传入的目录不存在,则Python将新建该目录。

也可以利用 ZipFile 对象的 extract() 方法对压缩包中的某个特定文件进行解压,extract() 方法的使用示例如下:

>> exampleZip.extract(‘spam.txt’)
‘C:\\spam.txt’
>>> exampleZip.extract(‘spam.txt’, ‘C:\\some\\new\\folders’)
‘C:\\some\\new\\folders\\spam.txt’
>>> exampleZip.close()

如上所示,当 extract() 方法可接收一个压缩包中的文件名作为参数,将其解压到当前目录中。也可以用一个绝对路径名称字符串作为该方法的第二个参数,将特定文件解压到该目录中,如果该目录不存在,Python程序将新建该目录。

3. 创建和增加文件到 ZIP 文件中

创建ZIP文件需要使用写模式,即将压缩包名称和写模式代号分别作为ZipFile方法的第一、第二个参数传入。示例代码如下:

>>> import zipfile
>>> newZip = zipfile.ZipFile(‘new.zip’, ‘w’)
>>> newZip.write(‘spam.txt’, compress_type=zipfile.ZIP_DEFLATED)
>>> newZip.close()

以上第二行代码新建了一个名为 new.zip 的压缩文件,并以写模式打开。第三行中用 ZipFile 对象的 write() 方法添加文件到压缩包中,该方法的第一个参数为需要添加进去的文件名,第二个参数为压缩算法,通常使用如上代码中的 ZIP_DEFLATED 即可。需要注意的是,类似于文件的写操作,如果目录中已存在同名的压缩文件,则原有文件将会被重写!如果需要继续添加文件到已有的压缩文件中,则在实例化 ZipFile 对象时,使用 ‘a’ 作为第二个参数即可。

Python ZIP 文件创建与读取的更多相关文章

  1. python zip文件密码爆破

    #!/usr/bin/env # coding=UTF-8 import zipfile import threading import os import sys class CrackZip: d ...

  2. python 按每行读取文件怎么去掉换行符

    python按每行读取文件后,会在每行末尾带上换行符,这样非常不方便后续业务处理逻辑,需要去掉每行的换行符,怎么去掉呢?看下面的案例: >>> a = "hello wor ...

  3. python从任意文件读取邮件地址输出的代码

    如下的资料是关于python从任意文件读取邮件地址输出的代码. # This script takes whatever you throw at stdin and outputs email ad ...

  4. Python 基于Python从mysql表读取千万数据实践

    基于Python 从mysql表读取千万数据实践   by:授客 QQ:1033553122 场景:   有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...

  5. Unity3D_08_XML文件创建,读取,修改,添加

    今天在工作之余学习了一下关于Unity中关于XML的部分. 在这里要注意添加两个命名空间,如下: 一.xml的解析 首先新建一个xml,可以命名为item.xml,拖进assets里面,内容如下: & ...

  6. python中configparser模块读取ini文件

    python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...

  7. python zip函数(11)

    一.zip函数描述和使用 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,返回的结果可以直接强转为list列表,这样做的好处是节约了不少的 ...

  8. Python configparser的使用 读取配置文件

    configparser是Python自带用于读取配置文件的工具包,它的使用非常简单 配置文件 配置文件[]中为section命名,section的命名可以包含空格,每个section下面以键值对的方 ...

  9. python学习-文件创建读取

    # 文件创建 # 读写# 文件存在?不存在?在操作系统上# 读 read r 写 write w# 打开一个文件# fs = open("xiaojian.txt",encodin ...

随机推荐

  1. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  2. python 数据类型 -- 元组

    元组其实是一种只读列表, 不能增,改, 只可以查询 对于不可变的信息将使用元组:例如数据连接配置 元组的两个方法: index, count >>> r = (1,1,2,3) &g ...

  3. 张高兴的 UWP 开发笔记:汉堡菜单进阶

    不同于Windows 8应用,Windows 10引入了"汉堡菜单"这一导航模式.说具体点,就拿官方的天气应用来说,左上角三条横杠的图标外加一个SplitView控件组成的这一导航 ...

  4. SQL Server中SELECT会真的阻塞SELECT吗?

    在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...

  5. Java Spring mvc 操作 Redis 及 Redis 集群

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...

  6. ABP源码分析四十二:ZERO的身份认证

    ABP Zero模块通过自定义实现Asp.Net Identity完成身份认证功能, 对Asp.Net Identity做了较大幅度的扩展.同时重写了ABP核心模块中的permission功能,以实现 ...

  7. out和ref详解

    要想充分理解C# out和ref,必须先明确如下两个概念(对值类型与引用类型掌握比较好的,可以跳过"一.明确两个基本概念") 一.明确两个基本概念 值类型: 定义:通过值的方式来传 ...

  8. iOS-证书

    1.iOS-证书相关 2.iOS-证书申请 3.iOS-APNS证书申请与使用 4.iOS-App发布证书的申请与使用

  9. H3C交换机 配置IP映射

    进入cmd 输入命令:telnet 192.168.x.x(交换机IP地址) 登陆后,更换用户"sys" 输入命令:dis cur(展示当前状态) 进入后按"空格&quo ...

  10. AngularJS_01之基础概述、设计原则及MVC设计模式

    1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...