這里討論使用Python解壓如下五種壓縮文件:
.gz .tar .tgz .zip .rar
簡介
gz: 即gzip,通常只能壓縮一個文件。與tar結合起來就可以實現先打包,再壓縮。
tar: linux系統下的打包工具,只打包,不壓縮
tgz:即tar.gz。先用tar打包,然后再用gz壓縮得到的文件
zip: 不同於gzip,雖然使用相似的算法,可以打包壓縮多個文件,不過分別壓縮文件,壓縮率低於tar。
rar:打包壓縮文件,最初用於DOS,基於window操作系統。壓縮率比zip高,但速度慢,隨機訪問的速度也慢。
關於zip於rar之間的各種比較,可見:
http://www.comicer.com/stronghorse/water/software/ziprar.htm
gz
由於gz一般只壓縮一個文件,所有常與其他打包工具一起工作。比如可以先用tar打包為XXX.tar,然后在壓縮為XXX.tar.gz
解壓gz,其實就是讀出其中的單一文件,Python方法如下:
tar
XXX.tar.gz解壓后得到XXX.tar,還要進一步解壓出來。
*注:tgz與tar.gz是相同的格式,老版本DOS擴展名最多三個字符,故用tgz表示。
由於這里有多個文件,我們先讀取所有文件名,然后解壓,如下:
*注:tgz文件與tar文件相同的解壓方法。
zip
與tar類似,先讀取多個文件名,然后解壓,如下:
rar
因為rar通常為window下使用,需要額外的Python包rarfile。
可用地址: http://sourceforge.net/projects/rarfile.berlios/files/rarfile-2.4.tar.gz/download
解壓到Python安裝目錄的/Scripts/目錄下,在當前窗口打開命令行,
輸入Python setup.py install
安裝完成。
- #!/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/'):
- for file in files:
- fullpath=os.path.join(root,file)
- tar.add(fullpath,arcname=file)
- tar.close()
- print time.time()-start
'r' or 'r:*' | Open for reading with transparent compression (recommended). |
'r:' | Open for reading exclusively without compression. |
'r:gz' | Open for reading with gzip compression. |
'r:bz2' | Open for reading with bzip2 compression. |
'a' or 'a:' | Open for appending with no compression. The file is created if it does not exist. |
'w' or 'w:' | Open for uncompressed writing. |
'w:gz' | Open for gzip compressed writing. |
'w:bz2' | Open for bzip2 compressed writing. |
- #!/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 = tarfile.open(filename, 'r:gz')
- for tar_info in tar:
- file = tar.extractfile(tar_info)
- do_something_with(file)
這里討論使用Python解壓如下五種壓縮文件:
.gz .tar .tgz .zip .rar
簡介
gz: 即gzip,通常只能壓縮一個文件。與tar結合起來就可以實現先打包,再壓縮。
tar: linux系統下的打包工具,只打包,不壓縮
tgz:即tar.gz。先用tar打包,然后再用gz壓縮得到的文件
zip: 不同於gzip,雖然使用相似的算法,可以打包壓縮多個文件,不過分別壓縮文件,壓縮率低於tar。
rar:打包壓縮文件,最初用於DOS,基於window操作系統。壓縮率比zip高,但速度慢,隨機訪問的速度也慢。
關於zip於rar之間的各種比較,可見:
http://www.comicer.com/stronghorse/water/software/ziprar.htm
gz
由於gz一般只壓縮一個文件,所有常與其他打包工具一起工作。比如可以先用tar打包為XXX.tar,然后在壓縮為XXX.tar.gz
解壓gz,其實就是讀出其中的單一文件,Python方法如下:
tar
XXX.tar.gz解壓后得到XXX.tar,還要進一步解壓出來。
*注:tgz與tar.gz是相同的格式,老版本DOS擴展名最多三個字符,故用tgz表示。
由於這里有多個文件,我們先讀取所有文件名,然后解壓,如下:
*注:tgz文件與tar文件相同的解壓方法。
zip
與tar類似,先讀取多個文件名,然后解壓,如下:
rar
因為rar通常為window下使用,需要額外的Python包rarfile。
可用地址: http://sourceforge.net/projects/rarfile.berlios/files/rarfile-2.4.tar.gz/download
解壓到Python安裝目錄的/Scripts/目錄下,在當前窗口打開命令行,
輸入Python setup.py install
安裝完成。
- #!/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/'):
- for file in files:
- fullpath=os.path.join(root,file)
- tar.add(fullpath,arcname=file)
- tar.close()
- print time.time()-start
'r' or 'r:*' | Open for reading with transparent compression (recommended). |
'r:' | Open for reading exclusively without compression. |
'r:gz' | Open for reading with gzip compression. |
'r:bz2' | Open for reading with bzip2 compression. |
'a' or 'a:' | Open for appending with no compression. The file is created if it does not exist. |
'w' or 'w:' | Open for uncompressed writing. |
'w:gz' | Open for gzip compressed writing. |
'w:bz2' | Open for bzip2 compressed writing. |
- #!/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 = tarfile.open(filename, 'r:gz')
- for tar_info in tar:
- file = tar.extractfile(tar_info)
- do_something_with(file)