1. 程式人生 > >使用Python3解壓gz、tar、tgz、zip、rar五種格式的壓縮檔案例子

使用Python3解壓gz、tar、tgz、zip、rar五種格式的壓縮檔案例子

使用Python3解壓如下五種壓縮檔案:gz、tar、tgz、zip、rar

簡介

gz: 即gzip,通常只能壓縮一個檔案。與tar結合起來就可以實現先打包,再壓縮。

tar: linux系統下的打包工具,只打包,不壓縮

tgz:即tar.gz。先用tar打包,然後再用gz壓縮得到的檔案

zip: 不同於gzip,雖然使用相似的演算法,可以打包壓縮多個檔案,不過分別壓縮檔案,壓縮率低於tar。

rar:打包壓縮檔案,最初用於DOS,基於window作業系統。壓縮率比zip高,但速度慢,隨機訪問的速度也慢。

例子

import gzip
import os
import tarfile , zipfile, rarfile

from library.utils.file import get_filetype
from library.utils.path import make_dir
from library.utils.type_conv import random_str

def uncompress(src_file, dest_dir):
    result = get_filetype(src_file)
    if not result[0] :
        return (False, result[1], '')
    filefmt = result[1]

    result = make_dir(dest_dir)
    if not result :
        return (False, '建立解壓目錄失敗', filefmt)

    if filefmt in ('tgz', 'tar') :
        try :
            tar = tarfile.open(src_file)  
            names = tar.getnames()   
            for name in names:  
                tar.extract(name, dest_dir)  
            tar.close()
        except Exception as e :
            return (False, e, filefmt)
    elif filefmt == 'zip':
        try :
            zip_file = zipfile.ZipFile(src_file)  
            for names in zip_file.namelist():  
                zip_file.extract(names, dest_dir)  
            zip_file.close()  
        except Exception as e :
            return (False, e, filefmt)
    elif filefmt == 'rar' :
        try :
            rar = rarfile.RarFile(src_file)  
            os.chdir(dest_dir)
            rar.extractall()  
            rar.close()  
        except Exception as e :
            return (False, e, filefmt)
    elif filefmt == 'gz' :
        try :

            f_name = dest_dir + '/' + os.path.basename(src_file)
            # 獲取檔案的名稱,去掉  
            g_file = gzip.GzipFile(src_file)  
            # 建立gzip物件  
            open(f_name, "w+").write(g_file.read())  
            # gzip物件用read()開啟後,寫入open()建立的檔案中。  
            g_file.close()  
            # 關閉gzip物件  

            result = get_filetype(src_file)
            if not result[0] :
                new_filefmt = '未知'
            else :
                new_filefmt = result[1]
            return (True, '解壓後的檔案格式為:' + new_filefmt, filefmt)
        except Exception as e :
            return (False, e, filefmt)
    else :
        return (False, '檔案格式不支援或者不是壓縮檔案', filefmt)

    return (True, '', filefmt)

相關推薦

使用Python3gztartgzziprar格式壓縮檔案例子

使用Python3解壓如下五種壓縮檔案:gz、tar、tgz、zip、rar 簡介 gz: 即gzip,通常只能壓縮一個檔案。與tar結合起來就可以實現先打包,再壓縮。 tar: linux

linux 下所有格式打包方法(tarbz2rar)詳

01-.tar格式 解包:[*******]$ tar xvf FileName.tar 打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是壓縮!) 02-.gz格式 解壓1:[*******]$ gunzip FileName.gz 解壓2:[**

貼一段java讀取hdfs gz zip tar.gz保存到hdfs的代碼

arc edi res 解壓 文件路徑 ado trace pub config package main.java;import java.io.*;import java.util.LinkedList;import java.util.List;import java

linux下 zip tar gz bz2等各種檔案命令

大致總結了一下linux下各種格式的壓縮包的壓縮、解壓方法。但是部分方法我沒有用到,也就不全,希望大家幫我補充,我將隨時修改完善,謝謝!      .tar   解包:tar xvf FileName.tar   打包:tar cvf FileName.tar DirNam

升級Linux tar &&解決某用tar失敗的tar

更新 文件名 發現 目錄 ftp 估計 決定 bin div 今天解壓個文件,出來很多這樣的: /bin/tar: Ignoring unknown extended header keyword `SCHILY.dev‘/bin/tar: Ignoring unknown

Linux命令(十) 打包或文件 tar

常用 特定 -- 返回 相關信息 href -c 壓縮文件 標識 目錄 1.命令簡介 2.常用參數介紹 3.實例 4.直達底部 命令簡介 tar 命令用於將文件打包或解壓,擴展名一般為 ".tar" ,指定特定的參數可以調用 gzip 或 bzip2 制作壓縮包或解

Python3 序列

所有 字符 class key ict true 情況 wan 中間 一般情況 x,y,z = 1,2,3 print("x:",x) # x:1 print("y:",y) # y:2 print("z:",z) # z:3 針對元祖 name = ("qiaob

Linux中使用gzip來壓縮/ *.gz檔案

gzip 是linux中常見的壓縮/解壓工具,最常見的使用物件是*.gz格式的檔案,這裡簡單介紹下它最常見的用法, GZIP(1) General Commands Manual GZIP(1)NAME      gzip, gunzip, zcat - compress

linux怎樣.gz檔案

gzip -d語 法:gzip [-acdfhlLnNqrtvV][-S <壓縮字尾字串>][-<壓縮效率>][--best/fast][檔案...] 或 gzip [-acdfhlLnNqrtvV][-S <壓縮字尾字串>][-<壓縮效率>][--best/f

Linux_gzip/gunzip 命令 .gz 檔案

gzip命令用來壓縮檔案。 gzip是個使用廣泛的壓縮程式,檔案經它壓縮過後,其名稱後面會多處“.gz”副檔名。 gzip是在Linux系統中經常使用的一個對檔案進行壓縮和解壓縮的命令,既方便又好用。 gzip不僅可以用來壓縮大的、較少使用的檔案以節省磁碟空間,還可以和ta

linux 批量gz bz2檔案

一、批量解壓bz2檔案 find -maxdepth 1 -name "*.bz2"|xargs -i tar xvjf {} 這條命令可解壓當前目錄下的所有bz2檔案 批量解壓是比較鬱悶的事,以前嘗試各種方法,甚至用指令碼迴圈語句解壓都不行 現在發現這條命令可以

aixgz

Linux上解壓為tar -zvxf file.tar.gz,但是這個命令到AIX上不好用。 goolge了下AIX的解壓命令:  gzip -dc file.tar.gz |tar  -xvf - tar.gz file format o壓縮 §# tar cv

tartgzgz檔案批量方法

我是用for i in $(ls *.tgz);do tar xvf $i;done 批量解壓的tgz檔案的我是用for i in $(ls *.gz);do gzip -d $i;done批量解壓的gz檔案的。由於linux的tar命令不支援批量解壓,所以很多網友編寫了好多支援批量解壓的shell命令,收集

java實現對ziptargzip(gz)的壓縮

以下是一個工具類: import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream;

linuxzipbzbz2zgztar(包)

zip: 壓縮:   zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目錄>][-ll][-n <字尾字串>][-t <日期時間>][-<壓縮效率>][壓縮檔案][檔案...][-i <範本樣式>][-x &

Aix 壓縮打包tar zip gz

tar是打包 zip和gz是壓縮 打包:tar -cf all.tar *.* 解包:tar -xvf *.tar 解壓zip檔案:jar xvf DB29.5_AIX.zip 解壓gz檔案:/usr/bin/gzip -d *.tar.gz

Linux作業系統中,*.zip*.tar*.tar.gz*.tar.bz2*.tar.xz*.jar*.7z等格式壓縮

zip格式 壓縮: zip -r [目標檔名].zip [原檔案/目錄名] 解壓: unzip [原檔名].zip 注:-r引數代表遞迴 tar格式(該格式僅僅打包,不壓縮) 打包:tar -cvf [目標檔名].tar [原檔名/目錄名] 解包:tar -xvf [原檔名].tar

linux下各種打包與壓縮檔案字尾及其壓縮方法.gz.tar.gztgz...

對於剛剛接觸Linux的人來說,一定會給Linux下一大堆各式各樣的檔名給搞暈。別個不說,單單就壓縮檔案為例,我們知道在Windows下最常見的壓縮檔案就只有兩種,一是,zip,另一個是.rap。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等眾多的壓縮檔名,此外windo

指令篇:文件與文件系統的壓縮與打包(歸檔)與___gzipzcat;bzip2bzcat;ziptar

roo 壓縮命令 過時 bsp 演示 組合 localhost 打包 mov 一、文件與文件系統的壓縮:   1、單文件的四種壓縮命令:     ①、Compress  (過時了,不做過多說明)     ②、gzip,zcat   (gzip:壓縮。zcat:查看)    

Linuxrarzipwartar文件

tar lin target war detail linux中 article tails itl 在Linux上解壓常見文件的命令: rar文件:rar e xxx.rar zip文件:unzip -xzvf xxx.zip war包:jar -xvf xxx.war