這裡討論使用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...