Python_面向对象_zipfile和tarfile
Posted bling-bling-star
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python_面向对象_zipfile和tarfile相关的知识,希望对你有一定的参考价值。
#python压缩解压模块: zipfile tarfile
#--zipfile模块
‘‘‘
后缀为zip
‘‘‘
zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
*ZipFile(路径包名,模式,压缩or打包,可选allowZip64)
功能:创建一个ZipFile对象,表示一个zip文件.
参数:
-参数file表示文件的路径或类文件对象(file-like object)
-参数mode指示打开zip文件的模式,默认值为r
r 表示读取已经存在的zip文件
w 表示新建一个zip文档或覆盖一个已经存在的zip文档
a 表示将数据追加到一个现存的zip文档中。
-参数compression表示在写zip文档时使用的压缩方法
zipfile.ZIP_STORED 只是存储模式,不会对文件进行压缩,这个是默认值
zipfile.ZIP_DEFLATED 对文件进行压缩
-如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。
#压缩文件
#1.ZipFile() 写模式w打开或者新建压缩文件
#2.write(路径,别名) 向压缩文件中添加文件内容
#3.close() 关闭压缩文件
#解压文件
#1.ZipFile() 读模式r打开压缩文件
#2.extractall(路径) 解压所有文件到某个路径下
# extract(文件,路径) 解压指定的某个文件到某个路径下
#3.close() 关闭压缩文件
#追加文件(支持with写法)
ZipFile() 追加模式a打开压缩文件
#查看压缩包中的内容
namelist()
"""
#处理zip中文乱码
#方法一
zip_file = zip_file.encode(‘cp437‘).decode(‘gbk‘)
#方法二
zip_file = zip_file.encode(‘utf-8‘).decode(‘utf-8‘)
"""
#--tarfile模块
"""
后缀类型: .tar | .tar.gz | .tar.bz2
模式有tar|gz|bz2 (bz2模式的压缩文件较小 gz相对bz2大)
例:
w 单纯的套一个后缀 打包
w:bz2 采用bz2算法 压缩
"""
#压缩文件
#1.open(‘路径包名‘,‘模式‘,‘字符编码‘)创建或者打开文件
#2.add(路径文件,arcname="别名")向压缩文件中添加文件
#3,close()关闭文件
#解压文件
#1.open(‘路径包名‘,‘模式‘,‘字符编码‘)读模式打开文件
#2.extractall(路径) 解压所有文件到某个路径下
# extract(文件,路径) 解压指定的某个文件到某个路径下
#3.close() 关闭压缩文件
#追加文件
open() 追加模式a:打开压缩文件 正常添加即可
#查看压缩包中的内容
getnames()
# zipfile模块
# 后缀是zip
# 压缩文件是zipfile
zp = zipfile.ZipFile("/mnt/hgfs/vm_gongxiang/star/a001.zip","w",zipfile.ZIP_DEFLATED)
zp.write("/bin/dash","dash")
zp.write("/bin/date","date")
zp.write("/bin/dd","dd")
zp.write("/bin/df","df")
zp.close()
# 压缩文件
with zipfile.ZipFile("/mnt/hgfs/vm_gongxiang/star/a001.zip","r") as zp:
zp.extractall("/mnt/hgfs/vm_gongxiang/star/a001")
# zp.extract("/mnt/hgfs/vm_gongxiang/star/a001")
# 追加文件
with zipfile.ZipFile("/mnt/hgfs/vm_gongxiang/star/a001.zip","a",zipfile.ZIP_DEFLATED) as zp:
zp.write("/bin/dmesg","/dmesg")
# 查看压缩包中的内容
with zipfile.ZipFile("/mnt/hgfs/vm_gongxiang/star/a001.zip","r") as zp:
res = zp.namelist()
print(res)
===
# tarfile模块
"""
后缀类型: .tar| .tar.gz | .tat.bz2
模式有tar|gz|bz2(bz2模式的压缩文件较小 gz相对bz2大)
例:
w 单纯的套个后缀 打包
w:gz 采用bz2算法 压缩
w:bz2 采用gz算法 压缩
"""
import tarfile
# tarfile 压缩文件
with tarfile.open("/mnt/hgfs/mv_gongxiang/star/a001.tar.bz","w:bz",encoding="gbk") as tf:
tf.add("/bin/dash",arcname="dash")
tf.add("/bin/date",arcname="date")
tf.add("/bin/dd",arcname="dd")
tf.add("/bin/df",arcname="df")
tf.add("/mnt/hgfs/mv_gongxiang/你好.txt",arcname="你好")
# tarfile 解压文件
with tarfile.open("/mnt/hgfs/mv_gongxiang/star/a001.tar.bz","r") as tf:
tf.extractall("/mnt/hgfs/mv_gongxiang/star/a001")
# tf.extract("/mnt/hgfs/mv_gongxiang/star/a001")
# tarfile 追加文件
with tarfil.open("/mnt/hgfs/mv_gongxiang/star/a001.tar.bz","a:") as tf:
tf.add("/bin/echo",arcname="echo")
# 查看压缩包中内容
with tarfile.open("/mnt/hgfs/mv_gongxiang/star/a001.tar.bz","r",encoding="gbk") as tf:
res = tf.getname()
print(res)
以上是关于Python_面向对象_zipfile和tarfile的主要内容,如果未能解决你的问题,请参考以下文章