python tarfile

TAR ->

import tarfile

tar = tarfile.open("tar_file.tar","w")

tar.add(".danoo_player_wifi")

tar.close()

 

TAR GZIP ->

tar = tarfile.open("tar_file.tar.gzip","w|gz")

tar.add("/root/.danoo_player_wifi")

tar.close()

 

TAR BZIP2 ->

tar = tarfile.open("tar_file.tar.bzip2","w|bz2")

tar.add("/root/.danoo_player_wifi")

tar.close()

 

检查tar压缩包内容 ->

import tarfile

tar = tarfile.open("temp.tar","r")

tar.list()

tar.name

tar.getnames()

tar.members

tar.close()

 

解压TAR包 ->

tar = tarfile.open("temp.tar","r")

tar.extractall()

tar.close()

---------------------------------------------------------

zipfile 模块

( 2.0 新增) zipfile 模块可以用来读写 ZIP 格式.

---------------------------------------------------------

列出内容

使用 namelist 和 infolist 方法可以列出压缩档的内容, 前者返回由文件名组成的列表, 后者返回由ZipInfo 实例组成的列表.

---------------------------------------------------------

使用 zipfile 模块列出 ZIP 文档中的文件

---------------------------------------------------------

import zipfile

file = zipfile.ZipFile("samples/sample.zip","r")    # 打开压缩包

# 列出压缩包内文件名
forname infile.namelist():         
    printname,

#列出压缩包内文件信息
for info in file.infolist():
    printinfo.filename, info.date_time, info.file_size

sample.txt sample.jpg
sample.txt (1999, 9, 11, 20, 11, 8) 302
sample.jpg (1999, 9, 18, 16, 9, 44) 4762

---------------------------------------------------------

从 ZIP 文件中读取数据

调用 read 方法就可以从 ZIP 文档中读取数据. 它接受一个文件名作为参数, 返回字符串

---------------------------------------------------------

import zipfile

file = zipfile.ZipFile("samples/sample.zip","r")   # 打开压缩包

for name infile.namelist():              #列出压缩包内文件名称
    data =file.read(name)                # 读取文件到data
    print name,len(data),repr(data[:10])       # 输出文件对象数量及内容

sample.txt 302 'We will pe'
sample.jpg 4762 '\377\330\377\340\000\020JFIF'

--------------------------------------------------------- 

ZIP文件写入数据

使用 zipfile 模块将文件储存在 ZIP文件里

向压缩档加入文件很简单, 将文件名, 文件在 ZIP 档中的名称传递给 write 方法即可.

write方法的第三个可选参数用于控制是否使用压缩.默认为zipfile.ZIP_STORED , 意味着只是将数据储存在档案里而不进行任何压缩.

如果安装了 zlib 模块, 那么就可以使用zipfile.ZIP_DEFLATED 进行压缩.

---------------------------------------------------------

importzipfile
import glob, os

file = zipfile.ZipFile("test.zip","w")     #打开压缩包,写方式

for name inglob.glob("samples/*"):       匹配samples目录下所有文件
   file.write(name, os.path.basename(name),zipfile.ZIP_DEFLATED)     #将文件写入到压缩包内

file.close()

file = zipfile.ZipFile("test.zip", "r")
for info in file.infolist():
    printinfo.filename, info.date_time, info.file_size,info.compress_size

sample.wav (1999, 8, 15, 21, 26, 46) 13260 10985
sample.jpg (1999, 9, 18, 16, 9, 44) 4762 4626
sample.au (1999, 7, 18, 20, 57, 34) 16761103

...

---------------------------------------------------------

使用 zipfile 模块在 ZIP文件中储存字符串

---------------------------------------------------------

import zipfile
import glob, os, time

file = zipfile.ZipFile("test.zip","w")         #打开压缩包,写方式

now =time.localtime(time.time())[:6]   # 获取当前时间 (2012, 2, 3, 16, 58, 39)

for name in ("life", "of","brian"):
   info = zipfile.ZipInfo(name)
   info.date_time = now
   info.compress_type = zipfile.ZIP_DEFLATED
   file.writestr(info, name*1000)

file.close()

# open the file again, to see what'sin it

file = zipfile.ZipFile("test.zip","r")

for info infile.infolist():
   print info.filename, info.date_time, info.file_size,info.compress_size

life (2000, 12, 1, 0, 12, 1) 400026
of (2000, 12, 1, 0, 12, 1) 200018
brian (2000, 12, 1, 0, 12, 1) 500031

---------------------------------------------------------

                  案例分析

---------------------------------------------------------

import zipfile

z = zipfile.ZipFile(filename, 'r') #这里的第二个参数用r表示是读取zip文件,w是创建一个zip文件

for f in z.namelist():
    print f

---------------------------------------------------------

import zipfile

z = zipfile.ZipFile(filename,'r')

for i inz.infolist():
   print i.file_size, i.header_offset

---------------------------------------------------------

import zipfile

z = zipfile.ZipFile(filename,'r')

printz.read(z.namelist()[0])

---------------------------------------------------------

import zipfile, os

z = zipfile.ZipFile(filename, 'w')# 注意这里的第二个参数是w,这里的filename是压缩包的名字

#假设要把一个叫testdir中的文件全部添加到压缩包里(这里只添加一级子目录中的文件):
ifos.path.isdir(testdir):
   for d in os.listdir(testdir):
       z.write(testdir+os.sep+d)
# close() 是必须调用的!

z.close()

---------------------------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值