python zipfile_python zipfile模块学习笔记(一)

python zipfile_python zipfile模块学习笔记(一)ZIP文件格式是一种常见的存档和压缩标准,这个zipfile模块提供了工具来创建、读取、写入、附加和列出一个ZIP文件。使用ZIP64扩展(即压缩文件大小超过4G),它能解压加密的ZIP文件,解密过程很慢。1、测试是否为ZIP文件is_zipfile()函数会返回一个布尔值来表示是否为ZIP文件,代码如下:#!/usr/bin/pythonimportzipfileforfilenamein…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

ZIP文件格式是一种常见的存档和压缩标准,这个zipfile模块提供了工具来创建、读取、写入、附加和列出一个ZIP文件。使用ZIP64扩展(即压缩文件大小超过4G),它能解压加密的ZIP文件,解密过程很慢。

1、测试是否为ZIP文件

is_zipfile()函数会返回一个布尔值来表示是否为ZIP文件,代码如下:

#!/usr/bin/python

import zipfile

for filename in [‘print_name.py’, ‘python.zip’, ‘uwsgi’, ‘admin’]:

print ‘%20s %s’ % (filename, zipfile.is_zipfile(filename))

如果文件不存在或者不是ZIP文件会返回False。

[root@www home]# python zipfile_is_zipfile.py

print_name.py False

python.zip True

uwsgi False

admin False

2、读取ZIP文件的内容

#!/usr/bin/env python

import zipfile

zf = zipfile.ZipFile(‘python.zip’, ‘r’)

print zf.namelist()

使用namelist() 函数,返回结果是一个列表

[root@www home]# python zipfile_namelist.py

[‘test.txt’]

#这只能查看ZIP文件的部分内容,使用infolist() 或者 getinfo() 可以从ZIP文件中获取更多信息,代码如下:

import datetime

import zipfile

def print_info(archive_name):

zf = zipfile.ZipFile(archive_name)

for info in zf.infolist():

print info.filename

print ‘\tComment:\t’, info.comment

print ‘\tModified:\t’, datetime.datetime(*info.date_time)

print ‘\tSystem:\t\t’, info.create_system, ‘(0 = Windows, 3 = Unix)’

print ‘\tZIP version:\t’, info.create_version

print ‘\tCompressed:\t’, info.compress_size, ‘bytes’

print ‘\tUncompressed:\t’, info.file_size, ‘bytes’

print

if __name__ == ‘__main__’:

print_info(‘python.zip’)

执行上面代码显示如下结果:

[root@www home]# python zipfile_infolist.py

test.txt

Comment:

Modified:   2013-09-06 20:09:58

System:     3 (0 = Windows, 3 = Unix)

ZIP version:    20

Compressed: 419430400 bytes

Uncompressed:   419430400 bytes

使用getinfo()函数可以在ZIP文件内查找内容,代码如下:

#!/usr/bin/env python

import zipfile

zf = zipfile.ZipFile(‘python.zip’)

for filename in [‘test.txt’, ‘notthere.txt’]:

try:

info = zf.getinfo(filename)

except KeyError:

print ‘ERROR: Did not find %s in zip file’ % filename

else:

print “%s is %d bytes” % (info.filename, info.file_size)

如果需要查找的不存在ZIP文档里,会返回一个KeyError错误。

[root@www home]# python zipfile_getinfo.py

test.txt is 419430400 bytes

ERROR: Did not find notthere.txt in zip file

3、从一个ZIP文档中提取文件

#!/usr/bin/env python

import zipfile

zf = zipfile.ZipFile(‘python.zip’)

for filename in [‘test.txt’, ‘notihere.txt’]:

try:

data = zf.read(filename)

except KeyError:

print ‘ERROR: Did not find %s in zip file’ % filename

else:

print filename, ‘:’

print repr(data)

print

要提取的文件会被自动解压:

[root@www home]# python zipfile_read.py

README.txt :

‘The examples for the zipfile module use this file and example.zip as data.\n’

ERROR: Did not find notthere.txt in zip file

4、创建一个新的ZIP文件

创建新的ZIP归档文件代码如下:

#!/usr/bin/env python

from zipfile_infolist import print_info

import zipfile

print ‘creating archive’

zf = zipfile.ZipFile(‘zipfile_write.zip’, ‘w’)

try:

print ‘adding text.txt’

zf.write(‘text.txt’)

finally:

print ‘closing’

zf.close()

print

print_info(‘zipfile_write.zip’)

默认情况下不会对文件进行压缩:

[root@www home]# python zipfile_write.py

creating archive

adding text.txt

closing

text.txt

Comment:

Modified:   2013-09-06 20:39:52

System:     3 (0 = Windows, 3 = Unix)

ZIP version:    20

Compressed: 104857600 bytes

Uncompressed:   104857600 bytes

如果要对文件进行压缩,zlib模块是必须的,如果zlib可以使用,你可以使用zipfile.ZIP_DEFLATED设置压缩模式为单个文件或者归档一个整体。默认的压缩模式是zipfile.ZIP_STORED。

#!/usr/bin/env python

from zipfile_infolist import print_info

import zipfile

try:

import zlib

compression = zipfile.ZIP_DEFLATED

except:

compression = zipfile.ZIP_STORED

modes = { zipfile.ZIP_DEFLATED: ‘deflated’,

zipfile.ZIP_STORED:   ‘stored’,

}

print ‘creating archive’

zf = zipfile.ZipFile(‘zipfile_write_compression.zip’, mode=’w’)

try:

print ‘adding text.txt with compression mode’, modes[compression]

zf.write(‘text.txt’, compress_type=compression)

finally:

print ‘closing’

zf.close()

print

print_info(‘zipfile_write_compression.zip’)

这次文件被压缩:

[root@www home]# python zipfile_write_compression.py

creating archive

adding text.txt with compression mode deflated

closing

text.txt

Comment:

Modified:   2013-09-06 20:39:52

System:     3 (0 = Windows, 3 = Unix)

ZIP version:    20

Compressed: 101923 bytes

Uncompressed:   104857600 bytes

替换原始文件名:

#!/usr/bin/env python

from zipfile_infolist import print_info

import zipfile

zf = zipfile.ZipFile(‘zipfile_write_arcname.zip’, mode=’w’)

try:

zf.write(‘text.txt’, arcname=’NOT_README.txt’)

finally:

zf.close()

print_info(‘zipfile_write_arcname.zip’)

结果显示原始文件名已经被替换了:

[root@www home]# python zipfile_write_arcname.py

NOT_README.txt

Comment:

Modified:   2013-09-06 20:39:52

System:     3 (0 = Windows, 3 = Unix)

ZIP version:    20

Compressed: 104857600 bytes

Uncompressed:   104857600 bytes

更多博文请移步:linux开源技术博客 http://www.chlinux.net

本文参考:http://docs.python.org/2/library/zipfile

http://pymotw.com/2/zipfile/

©著作权归作者所有:来自51CTO博客作者1594cqb的原创作品,如需转载,请注明出处,否则将追究法律责任

归档pythonzippython

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192497.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JS数组合并(5种)

    JS数组合并(5种)前言项目过程中,经常会遇到JS数组合并的情况,时常为这个纠结。这里整理一下。简单而实用的for最容易想到的莫过于for了。会变更原数组,当然也可以写成生成新数组的形式。letarr=[1,2]letarr2=[3,4]for(letiinarr2){arr.push(arr2[i])}console.log(arr)//[1,2,3,4]arr.concat(arr2)会生成新的数组。letarr=[1,2]let

    2022年6月30日
  • 企业微信api接口文档_接口文档示例

    企业微信api接口文档_接口文档示例提供一些我自己使用过的api数据接口,让学习前端的朋友可以提早熟练地调用一些Api接口。以下api数据接口主要为一些学过ajax或一些学过vue基础的同学。第一个:网易云音乐的api数据接口,基础访问地址(api的跟地址)为:https://autumnfish.cn/点击查看文档,就可以进入接口文档的详细使用步骤了。这个接口很适合喜欢音乐的朋友去打造属于自己的音乐主页第二个:黑马…

    2022年9月18日
  • 网络编程socket原理_socket的基本概念和原理

    网络编程socket原理_socket的基本概念和原理一、客户机/服务器模式在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Servermodel)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务:(过程如下)1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。2、等待客户请求到

    2022年10月10日
  • 队列数据结构的典型应用_kafka优先级队列

    队列数据结构的典型应用_kafka优先级队列上一篇文章讲解了队列的相关知识,同时用代码实现了一个队列结构。那么本文将介绍一下另一种特殊的队列结构,叫做优先级队列。上一篇文章的跳转链接——公众号:Lpyexplore的编程小屋关注我,每天更新,带你在python爬虫的过程中学习前端,还有更多电子书和面试题等你来拿数据结构——优先级队列一、什么是优先级队列一、什么是优先级队列在了解了什么是队列以后,我们再来了解优先级队列,顾名思义,优先级队列就是在队列的基础上给每个元素加上了先后顺序,我们仍然拿排队买票的例子来讲解。…

    2022年9月24日
  • 功能测试数据测试之因果图分析方法[通俗易懂]

    功能测试数据测试之因果图分析方法[通俗易懂]定义是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。因果图法产生的背景等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用

    2022年8月14日
  • matlab的fprintf语句_matlab绝对值函数

    matlab的fprintf语句_matlab绝对值函数1、fprintf函数:将数据按指定格式写入到文本文件中。2、用法说明:fprintf(fid,format,variables);按指定的格式将变量的值输出到屏幕或指定文件;fid为文件句柄,指定要写入数据的文件,若缺省,则输出到屏幕;format是用来控制所写数据格式的格式符,format用来指定数据输出时采用的格式:%d整数%e实数:科学计算法形式%f实数:小数形…

    2022年10月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号