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

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") # 打开压缩包

# 列出压缩包内文件名for

name in

file.namelist(): print

name,

#

列出压缩包内文件信息

for info in file.infolist():

print

info.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 in

file.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 进行压缩.

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

import

zipfile

import glob, os

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

"w") #

打开压缩包,写方式

for name in

glob.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():

print

info.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) 1676

1103...

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

使用 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's

in it

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

"r")

for info in

file.infolist():

print info.filename, info.date_time, info.file_size,

info.compress_size

life (2000, 12, 1, 0, 12, 1) 4000

26

of (2000, 12, 1, 0, 12, 1) 2000

18

brian (2000, 12, 1, 0, 12, 1) 5000

31

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

案例分析

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

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 in

z.infolist():

print i.file_size, i.header_offset

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

import zipfile

z = zipfile.ZipFile(filename,

'r')

print

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

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

import zipfile, os

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

# 注意这里的第二个参数是w,这里的filename是压缩包的名字

#假设要把一个叫testdir中的文件全部添加到压缩包里(这里只添加一级子目录中的文件):

if

os.path.isdir(testdir):

for d in os.listdir(testdir):

z.write(testdir+os.sep+d)

# close() 是必须调用的!

z.close()

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐