Python ZIP 文件创建与读取
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 文件创建与读取的更多相关文章
- python zip文件密码爆破
#!/usr/bin/env # coding=UTF-8 import zipfile import threading import os import sys class CrackZip: d ...
- python 按每行读取文件怎么去掉换行符
python按每行读取文件后,会在每行末尾带上换行符,这样非常不方便后续业务处理逻辑,需要去掉每行的换行符,怎么去掉呢?看下面的案例: >>> a = "hello wor ...
- python从任意文件读取邮件地址输出的代码
如下的资料是关于python从任意文件读取邮件地址输出的代码. # This script takes whatever you throw at stdin and outputs email ad ...
- Python 基于Python从mysql表读取千万数据实践
基于Python 从mysql表读取千万数据实践 by:授客 QQ:1033553122 场景: 有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...
- Unity3D_08_XML文件创建,读取,修改,添加
今天在工作之余学习了一下关于Unity中关于XML的部分. 在这里要注意添加两个命名空间,如下: 一.xml的解析 首先新建一个xml,可以命名为item.xml,拖进assets里面,内容如下: & ...
- python中configparser模块读取ini文件
python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...
- python zip函数(11)
一.zip函数描述和使用 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,返回的结果可以直接强转为list列表,这样做的好处是节约了不少的 ...
- Python configparser的使用 读取配置文件
configparser是Python自带用于读取配置文件的工具包,它的使用非常简单 配置文件 配置文件[]中为section命名,section的命名可以包含空格,每个section下面以键值对的方 ...
- python学习-文件创建读取
# 文件创建 # 读写# 文件存在?不存在?在操作系统上# 读 read r 写 write w# 打开一个文件# fs = open("xiaojian.txt",encodin ...
随机推荐
- 烂泥:数据库管理之phpmyadmin免密码配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 其实这篇文章很早就想写了,但是一直没有时间.刚好今天下午稍微空了点,就把这篇文章整理出来 ...
- linux启动SSH及开机自动启动
本文地址 分享提纲: 1.查看是否启动 2. 设置自动启动 1.[查看是否启动] 启动SSH服务 “/etc/init.d/sshd start”.然后用netstat -antulp | grep ...
- 【swift】BlockOperation和GCD实用代码块
//BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ...
- osi(open system interconnection)模型的通俗理解
OSI模型的理解: 以你和你女朋友以书信的方式进行通信为例. 1.物理层:运输工具,比如火车.汽车. 2.数据链路层:相当于货物核对单,表明里面有些什么东西,接受的时候确认一下是否正确(CRC检验). ...
- ubuntu14 查找并删除所有文件名中带有特定关键词的文件
http://askubuntu.com/questions/625219/how-to-search-and-delete-files-who-contain-specific-string-in- ...
- 基于AngularJs的上传控件-angular-file-upload
今天跟大家分享的是一个依赖于angular的上传控件. 前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用 ...
- Ford-Fulkerson 最大流算法
流网络(Flow Networks)指的是一个有向图 G = (V, E),其中每条边 (u, v) ∈ E 均有一非负容量 c(u, v) ≥ 0.如果 (u, v) ∉ E 则可以规定 c(u, ...
- 修复IE11首页被恶意篡改的问题
前几天为了测试一个程序,把系统换成了Windows10,Windows10自带了微软的新浏览器Edge和IE11,用来其实也没什么太多感觉了,我习惯于Chrome,但有些东西还是得用IE,比如网银之类 ...
- C# OracleDBhelper
引用 using System.Configuration;using System.Data.OracleClient; 连接字符串 <connectionStrings> <ad ...
- iOS实现UITableViewDataSource与Controller的分离
写在前面 在之前的项目中好多处用到了tableView,然而之前不懂得将代理方法实现分离,所以每在一处用到tableView就要在controller中写一遍UITableViewDataSource ...