码迷,mamicode.com
首页 > 编程语言 > 详细

Python_面向对象_zipfile和tarfile

时间:2018-08-02 22:47:20      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:包名   size   写法   解压   中文乱码   dash   添加   store   pfile   

#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

标签:包名   size   写法   解压   中文乱码   dash   添加   store   pfile   

原文地址:https://www.cnblogs.com/bling-bling-star/p/9409656.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!