python 實現tar檔案壓縮解壓的例項詳解

2021-10-24 06:55:27 字數 4115 閱讀 5287

這裡討論使用python解壓如下五種壓縮檔案:

.gz .tar  .tgz .

zip.rar

簡介gz由於gz一般只壓縮乙個檔案,所有常與其他打包工具一起工作。比如可以先用tar打包為***.tar,然後在壓縮為***.tar.gz

解壓gz,其實就是讀出其中的單一檔案,python方法如下:

import gzip  

import os

defun_gz

(file_name)

:"""ungz zip file"""

f_name = file_name.replace(

".gz",""

)#獲取檔案的名稱,去掉

g_file = gzip.gzipfile(file_name)

#建立gzip物件

open

(f_name,

"w+"

).write(g_file.read())

#gzip物件用read()開啟後,寫入open()建立的檔案中。

g_file.close(

)#關閉gzip物件

tar***.tar.gz解壓後得到***.tar,還要進一步解壓出來。

*注:tgz與tar.gz是相同的格式,老版本dos副檔名最多三個字元,故用tgz表示。

由於這裡有多個檔案,我們先讀取所有檔名,然後解壓,如下:

'''

'''import tarfile

defun_tar

(file_name)

: untar zip

file

"""

tar = tarfile.

open

(file_name)

names = tar.getnames(

)if os.path.isdir(file_name +

"_files"):

pass

else

: os.mkdir(file_name +

"_files"

)#由於解壓後是許多檔案,預先建立同名資料夾

for name in names:

tar.extract(name, file_name +

"_files/"

) tar.close(

)

*注:tgz檔案與tar檔案相同的解壓方法。

zip

與tar類似,先讀取多個檔名,然後解壓,如下:

import zipfile  

defun_zip

(file_name)

:"""unzip zip file"""

zip_file = zipfile.zipfile(file_name)

if os.path.isdir(file_name +

"_files"):

pass

else

: os.mkdir(file_name +

"_files"

)for names in zip_file.namelist(

):

zip_file.extract(names,file_name +

"_files/"

) zip_file.close(

)

rar因為rar通常為window下使用,需要額外的python包rarfile。

解壓到python安裝目錄的/scripts/目錄下,在當前視窗開啟命令列,

輸入python setup.py install

安裝完成。

'''

'''import rarfile

import os

defun_rar

(file_name)

:"""unrar zip file"""

rar = rarfile.rarfile(file_name)

if os.path.isdir(file_name +

"_files"):

pass

else

: os.mkdir(file_name +

"_files"

) os.chdir(file_name +

"_files"

):

rar.extractall(

) rar.close(

)

tar打包在寫打包**的過程中,使用tar.add()增加檔案時,會把檔案本身的路徑也加進去,加上arcname就能根據自己的命名規則將檔案加入tar包

打包**:

'''

'''#!/usr/bin/env /usr/local/bin/python

# encoding: utf-8

import tarfile

import os

import time

start = time.time(

) tar=tarfile.

open

('/path/to/your.tar,'w')

for root,

dir,files in os.walk(

'/path/to/dir/'):

forfile

in files:

fullpath=os.path.join(root,

file

) tar.add(fullpath,arcname=

file

) tar.close(

)print time.time(

)-start

在打包的過程中可以設定壓縮規則,如想要以gz壓縮的格式打包

tar=tarfile.

open

('/path/to/your.tar.gz'

,'w:gz'

)

其他格式如下表:

tarfile.open的mode有很多種:

tar解包

tar解包也可以根據不同壓縮格式來解壓。

#!/usr/bin/env /usr/local/bin/python  

# encoding: utf-8

import tarfile

import time

start = time.time(

) t = tarfile.

open

("/path/to/your.tar"

,"r:"

) t.extractall(path =

'/path/to/extractdir/'

) t.close(

)print time.time(

)-start

上面的**是解壓所有的,也可以挨個起做不同的處理,但要如果tar包內檔案過多,小心記憶體哦~

tar = tarfile.

open

(filename,

'r:gz'

)for tar_info in tar:

file

= tar.extractfile(tar_info)

do_something_with(

file

)

python實現tar檔案壓縮解壓的例項詳解

python實現tar檔案壓縮解壓的例項詳解 這篇文章主要介紹了python 實現tar檔案壓縮解壓的例項詳解的相關資料,這裡提供實現方法,幫助大家學習理解這部分內容,需要的朋友可以參考下 python 實現tar檔案壓縮解壓的例項詳解 壓縮檔案 import tarfile import os d...

檔案打包壓縮tar

tar option.file c 建立 f 指定歸檔檔案名稱 t 顯示歸檔檔案中的內容 r 向歸檔檔案中新增檔案 x 取出歸檔檔案中的所有內容 c 指定解檔目錄 v 顯示過程,z gz格式壓縮 j bz2格式壓縮 j xz格式壓縮 get 取出單個檔案 delete 刪除單個檔案 打包 tar c...

tar命令壓縮和解壓 tar檔案

1.壓縮 tar cvf tmp etc.tar etc 2.解壓 tar xvf tmp etc.tar c 3.tar命令常用的功能 c 建立新的tar檔案 x 解開tar檔案 t 列出tar檔案中包含的檔案的資訊 r 附加新的檔案到tar檔案中 注意 以上功能是獨立的,一次只能使用乙個。4.t...