從簡(jiǎn)單的角度來看的話,zip格式會(huì)是個(gè)不錯(cuò)的選擇,而且python對(duì)zip格式的支持夠簡(jiǎn)單,夠好用。zip文件格式信息一個(gè) ZIP 文件由三個(gè)部分組成:壓縮源文件數(shù)據(jù)區(qū)+壓縮源文件目錄區(qū)+壓縮源文件目錄結(jié)束標(biāo)志 1)壓縮源文件數(shù)據(jù)區(qū),在這個(gè)數(shù)據(jù)區(qū)中每一個(gè)壓縮的源文件/目錄都是一條記錄,記錄的格式如下: [文件頭+ 文件數(shù)據(jù) + 數(shù)據(jù)描述符] 2)壓縮源文件目錄區(qū),在這個(gè)數(shù)據(jù)區(qū)中每一條紀(jì)錄對(duì)應(yīng)在壓縮源文件數(shù)據(jù)區(qū)中的一條數(shù)據(jù),如果你僅僅是希望用python來做壓縮和解壓縮,那么就不用去翻文檔了,這里提供一個(gè)簡(jiǎn)單的用法,讓你一看就能明白。
# -*- coding: gbk -*-
#zipfile模塊
#讀取或?qū)懭隯IP壓縮包
#讀取ZIP壓縮包的文件列表
import zipfile
import os
import glob
file = zipfile.ZipFile("zipfile_module.zip", "r")
print '''列出文件'''
for name in file.namelist():
print name
print '''列出文件信息'''
for info in file.infolist():
print info.filename,"文件名"
print info.date_time,"修改時(shí)間"
print info.file_size,"大小"
print info.compress_type,"壓縮級(jí)別"
print info.compress_size ,"壓縮數(shù)據(jù)大小"
print info.file_size,"未壓縮文件大小"
for i in range(1, 10):
print ""
print '''解壓操作 unzip'''
for name in file.namelist():
file.extract(name,os.getcwd()+"/zipfile_module") #解壓到當(dāng)前目錄
#關(guān)閉壓縮文件句柄
file.close()
print '''壓縮操作 zip'''
#獲取當(dāng)前目錄樹
fileLists=[]
for root,dirs,files in os.walk("zipfile_module"):
for name in dirs:
fileLists.append(os.path.join(root, name)) #目錄入列表
for name in files:
fileLists.append(os.path.join(root,name)) #文件入列表
#創(chuàng)建壓縮文件
file2=zipfile.ZipFile(os.getcwd()+"/zipfile_module2"+".zip",'w',zipfile.ZIP_DEFLATED) #zipfile.zlib.DEFLATED 亦可
#寫入目錄樹
for name in fileLists:
file2.write(name)
#關(guān)閉壓縮文件
file2.close()