python中的zip模块

zip压缩


引入模块:

import zipfile

zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下:

zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
功能:创建一个ZipFile对象,表示一个zip文件。
参数:-参数file表示文件的路径或类文件对象(file-like object)-参数mode指示打开zip文件的模式,默认值为rr    表示读已经存在的zip文件w    表示新建一个zip文档或覆盖一个已经存在的zip文档a    表示将数据附加到一个现存的zip文档中。-参数compression表示在写zip文档时使用的压缩方法zipfile.ZIP_STORED      只是存储模式,不会对文件进行压缩,这个是默认值zipfile.ZIP_DEFLATED    对文件进行压缩-如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。

ZipFile还提供了如下常用的方法和属性:


ZipFile.getinfo(name)

功能:获取zip文档内指定文件的信息。返回一个zipfile.ZipInfo对象,它包括文件的详细信息。将在下面 具体介绍该对象。

ZipFile.infolist()

功能:获取zip文档内所有文件的信息,返回一个zipfile.ZipInfo的列表。

ZipFile.namelist()

功能:获取zip文档内所有文件的名称列表。

ZipFile.extract(member[, path[, pwd]])

功能:将zip文档内的指定文件解压到当前目录。
参数:member      指定要解压的文件名称或对应的ZipInfo对象path        指定解析文件保存的文件夹pwd         解压密码

下面一个例子将保存在程序根目录下的txt.zip内的所有文件解压到D:/Work目录:

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'txt.zip'))
for file in zipFile.namelist():zipFile.extract(file, r'd:/Work')
zipFile.close()

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), ‘txt.zip’))
for file in zipFile.namelist():
zipFile.extract(file, r’d:/Work’)
zipFile.close()

ZipFile.extractall([path[, members[, pwd]]])

功能:解压zip文档中的所有文件到当前目录。
参数:members      默认值为zip文档内的所有文件名称列表,也可以自己设置,选择要解压的文件名称。

ZipFile.printdir()

功能:将zip文档内的信息打印到控制台上。

ZipFile.setpassword(pwd)

功能:设置zip文档的密码。

ZipFile.read(name[, pwd])

功能:获取zip文档内指定文件的二进制数据。

下面的例子演示了read()的使用,zip文档内包括一个txt.txt的文本文件,使用read()方法读取其二进制数据,然后保存到D:/txt.txt。

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'txt.zip'))
data = zipFile.read('txt.txt')
#一行语句就完成了写文件操作。仔细琢磨哦~_~
(lambda f, d: (f.write(d), f.close()))(open(r'd:/txt.txt', 'wb'), data)
zipFile.close()

ZipFile.write(filename[, arcname[, compress_type]])

功能:将指定文件添加到zip文档中。
参数:filename      文件路径arcname       添加到zip文档之后保存的名称compress_type 压缩方法,它的值可以是zipfile.ZIP_STORED 或zipfile.ZIP_DEFLATED

ZipFile.writestr(zinfo_or_arcname, bytes)

功能:writestr()支持将二进制数据直接写入到压缩文档。

ZipFile.getinfo(name)

功能:返回一个ZipInfo对象,表示zip文档中相应文件的信息。
它支持如下属性:ZipInfo.filename        获取文件名称。ZipInfo.date_time       获取文件最后修改时间。返回一个包含6个元素的元组:(年, 月, 日, 时, 分, 秒)ZipInfo.compress_type   压缩类型。ZipInfo.comment         文档说明。ZipInfo.extr            扩展项数据。ZipInfo.create_system   获取创建该zip文档的系统。ZipInfo.create_version  获取、创建zip文档的PKZIP版本。ZipInfo.extract_versio  获取、解压zip文档所需的PKZIP版本。ZipInfo.reserved        预留字段,当前实现总是返回0。ZipInfo.flag_bits       zip标志位。ZipInfo.volume          文件头的卷标。ZipInfo.internal_attr   内部属性。ZipInfo.external_attr   外部属性。ZipInfo.header_offset   文件头偏移位。ZipInfo.CRC             未压缩文件的CRC-32。ZipInfo.compress_size   获取压缩后的大小。ZipInfo.file_size       获取未压缩的文件大小。

下面一个简单的例子说明这些属性的意思:

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'txt.zip'))
zipInfo = zipFile.getinfo('doc.doc')
print 'filename:', zipInfo.filename
print 'date_time:', zipInfo.date_time
print 'compress_type:', zipInfo.compress_type
print 'comment:', zipInfo.comment
print 'extra:', zipInfo.extra
print 'create_system:', zipInfo.create_system
print 'create_version:', zipInfo.create_version
print 'extract_version:', zipInfo.extract_version
print 'extract_version:', zipInfo.reserved
print 'flag_bits:', zipInfo.flag_bits
print 'volume:', zipInfo.volume
print 'internal_attr:', zipInfo.internal_attr
print 'external_attr:', zipInfo.external_attr
print 'header_offset:', zipInfo.header_offset
print 'CRC:', zipInfo.CRC
print 'compress_size:', zipInfo.compress_size
print 'file_size:', zipInfo.file_size
zipFile.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[LeetCode] 35. Search Insert Position

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You may assume no duplicates in the array. Here are few examples.[1,3,5,6], 5 → 2[1,3,5,6], 2 → 1[1…

golang 的交叉编译

为什么80%的码农都做不了架构师?>>> Go是一门编译型语言,所以在不同平台上,需要编译生成不同格式的二进制包。 由于Go 1.5对跨平台编译有了一些改进,包括统一了编译器、链接器等。 编译时候只需要指定两个参数&#x…

【深度学习】Cifar-10-探究不同的改进策略对分类准确率提高

cifar10数据集上进行图片分类,基于tensorflow框架, 旨在探究不同的改进策略对分类准确率的影响,如何一步步得提高准确率 一、问题描述 当我们在处理图像识别或者图像分类或者其他机器学习任务的时候,我们总是迷茫于做出哪些改进…

Acer 4750 安装黑苹果_黑苹果 MacOS 10.15 Catalina安装教程

一、准备工作一个8G以上的U盘(安装 10.15 Catalina 必须要16G及以上的U盘 );Mac OS镜像、TransMac(刻录工具)、DiskGenius(分区工具)、EasyUEFI(引导工区)、EFI驱动文件。安装工具获取方式:关注公众号【远景论坛】,回复:黑苹果二、…

帧内16*16模式的宏块数据传输顺序

如果宏块以16*16帧内模式编码,那么块-1首先被传输,携带的信息是每个4*4亮度块的DC系数。然后,亮度残差块0-15被传输(此时,16*16帧内宏块的DC系数为零)。对于亮度分量Cb和Cr,16和17块携带DC系数的…

ceph中查看一个rbd的image的真实存储位置

1、新建一个image存储 rbd create hzb-mysql --size 2048 2、查看hzb-mysql的所有对象 一个rbd image实际上包含了多个对象(默认情况下是image_size/4M) [rootcc ~]# rbd info hzb-mysql rbd image hzb-mysql:size 2048 MB in 512 objectsorder 22 (4096…

python中的shutil模块

shutil模块 引入: import shutil copy() 功能:复制文件 格式:shutil.copy(来源文件,目标地址) 返回值:复制之后的路径copy2() 功能:复制文件,保留元数据 格式:shutil.copy2(来源文件,目标地址…

亚马逊低调收购Biba 或下月发布视频消息服务

北京时间11月24日消息,据外媒报道,收购Twitch和Elemental Technologies似乎只是亚马逊通过收购深耕视频服务市场战略的两个元素。去年,亚马逊还低调收购了创业公司Biba Systems,后者开发和运营面向企业用户的视频消息应用。消息人…

【tensorflow】static_rnn与dynamic_rnn的区别

static_rnn和dynamic_rnn的区别主要在于实现不同。 static_rnn会把RNN展平,用空间换时间。 gpu会吃不消(个人测试结果) dynamic_rnn则是使用for或者while循环。 调用static_rnn实际上是生成了rnn按时间序列展开之后的图。打开tensorboard你…

pcie1 4 速度_太阳系行星们谁转得最快?八大行星自转速度排行榜,地球排第五...

不知道大家有没有玩儿过陀螺呢?玩儿陀螺的技术如果很好的话,它可以在地上飞快地旋转并且能够旋转很长的时间。有趣的是,宇宙中的很多星球就像陀螺一样绕着一个中心轴旋转着。这就是星球的自转。在太阳系中有八颗大行星,它们都在自…

python中时间模块

时间日期相关的模块 calendar 日历模块time   时间模块datetime 日期时间模块timeit   时间检测模块 日历模块 calendar() 功能:获取指定年份的日历字符串 格式:calendar.calendar(年份,w2,l1,c6,m3) 返回值&…

硬盘接口详细解释

硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。硬盘有固态硬盘(SSD 盘,新式硬盘)、机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械…

【Keras】30 秒上手 Keras+实例对mnist手写数字进行识别准确率达99%以上

本文我们将学习使用Keras一步一步搭建一个卷积神经网络。具体来说,我们将使用卷积神经网络对手写数字(MNIST数据集)进行识别,并达到99%以上的正确率。 为什么选择Keras呢? 主要是因为简单方便。更多细节请看:https://keras.io/ …

分布式资本沈波:未来区块链杀手级应用将出现在“+区块链”

雷锋网5月22日报道,日前“区块链技术和应用峰会”在杭州国际博览中心举行。会上,分布式资本创始管理人沈波作了《区块链的投资现状与发展趋势》演讲。 沈波表示,由于区块链的共识机制和无法篡改两大特点,它在各行各业皆有应用潜力…

帧间预测小记

帧间预测后,在比特流中会有相应的信息:残差信息,运动矢量信息,所选的模式。 宏块的色度分量分辨率是亮度分辨率的一半(Cr和Cb),水平和垂直均一半。色度块采用和亮度块一致的分割模式&#xff0…

ImageJ Nikon_科研论文作图之ImageJ

各位读者朋友们又见面了,今天给大家介绍一款图片处理软件——ImageJ,这是一款免费的科学图像分析工具,广泛应用于生物学研究领域。ImageJ软件能够对图像进行缩放、旋转、扭曲、模糊等处理,也可计算选定区域内分析对象的一系列几何…

python中面向对象

面向对象 Object Oriented 面向对象的学习: 面向对象的语法(简单,记忆就可以搞定)面向对象的思想(稍难,需要一定的理解) 面向过程和面向对象的区别 面向过程开发,以函数作为基本结构…

【urllib】url编码问题简述

对url编解码总结 需要用到urllib库中的parse模块 import urllib.parse # Python3 url编码 print(urllib.parse.quote("天天")) # Python3 url解码 print(urllib.parse.unquote("%E5%A4%E5%A4%")) urlparse() # urllib.parse.urlparse(urlstring,scheme,…

冷知识 —— 地理

西安1980坐标系: 1978 年 4 月在西安召开全国天文大地网平差会议,确定重新定位,建立我国新的坐标系。为此有了 1980 国家大地坐标系。1980 国家大地坐标系采用地球椭球基本参数为 1975 年国际大地测量与地球物理联合会第十六届大会推荐的数据…

独家| ChinaLedger白硕:区块链中的隐私保护

隐私问题一直是区块链应用落地的障碍问题之一,如何既能满足监管,又能不侵害数据隐私,是行业都在攻克的问题。那么,到底隐私问题为何难?有什么解决思路,以及实践创新呢?零知识证明、同态加密等技…