zipfile实现压缩及解压

举报
HW小龙 发表于 2020/09/05 02:42:11 2020/09/05
【摘要】 1.Python--zipfile压缩ZIP文件:import zipfilef = zipfile.ZipFile(target, 'w', zipfile.ZIP_DEFLATED)f.write(filename, file_url)f.close()其中target:是压缩后要保存的文件名ZIP_DEFLATED:表示压缩,ZIP_STORE:表示只打包,不压缩。(这个Linux中的...

1.Python--zipfile压缩ZIP文件:

import zipfile
f = zipfile.ZipFile(target, 'w', zipfile.ZIP_DEFLATED)
f.write(filename, file_url)
f.close()


其中

target:是压缩后要保存的文件名

ZIP_DEFLATED:表示压缩,

ZIP_STORE:表示只打包,不压缩。(这个Linux中的gz跟tar格式有点类似)

write方法:

  如果只有一个参数filename的话,表示把你filename所带的路径全部压缩到zip文件中。

  如果带两个参数,表示把filename路径中的那个file压缩一下并且存放到file_url中,中间没有增加任何的文件夹。(如果把文件放到根目录,请把file_url填为被压缩的文件名)

  如果要压缩很多的文件,循环的write每个文件就ok了

最后关闭文件close。


2.Python--zipfile解压ZIP文件:

f = zipfile.ZipFile(tatgert,'r')
    for file in f.namelist(): 
      #f.namelist()返回列表,列表中的元素为压缩文件中的每个文件  
        f.extract(file,"temp/")

target是压缩文件的路径

循环访问该压缩文件中的文件,并且一个一个file的解压到对应的"temp\"文件夹中


gzip实现压缩及解压

gzip块主要支持打开对应格式的压缩文件,并可以完成对压缩文件的读出和写入操作。压缩文件被打开后,可以使用文件对象一样的方法,如read、readline、readlines、write、writelines等。

1.Python--gzip压缩ZIP文件:

import gzip
f_src = open("data.txt", "rb") #打开文件
f_tar= gzip.open("data.txt.gz", "wb")#创建压缩文件对象f_tar.writelines(f_src)
f_tar.close()
f_src.close()
import gzip 
g = gzip.GzipFile(filename="", mode="wb", compresslevel=9, fileobj=open('sitemap.log.gz', 'wb'))
g.write(open('d:\\test\\sitemap.xml').read())
g.close()


其中,filename参数是压缩文件内文件的名字,为空也可以,不修改。fileobj是生成的压缩文件对象,它的路径名称等。最后是把文件写入gzip文件中去,再关闭操作连接。

2.Python--gzip解压ZIP文件:

import gzip
f = gzip.open("test.gz", 'rb')        #打开压缩文件对象
f_out=open("data.txt","w")              #打开解压后内容保存的文件
file_content = f.read()                #读取解压后文件内容
f_out.write(file_content.decode("utf-8"))     #写入新文件当中
print(file_content)                  #打印读取内容
f.close()
f_out.close()
g = gzip.GzipFile(mode="rb", fileobj=open('c:\\test\\abc.gz', 'rb'))
open(r"d:\\haha.xml", "wb").write(g.read())


使用的时候注意,函数方法的大小写一点要看仔细,如果gzip文件是这种形式的:*.tar.gz,证明先是由tar命令压缩后,后再由 gzip压缩的,需要先用解压缩tar文件,再用gzip模块解压缩。其实,现在很多网页为了提高浏览器端用户的访问速度,和搜索引擎爬虫抓取的速度,都在使用gzip压缩。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。