系統:ubuntu14.04
開發環境:python2.7
實現功能:讀取.7z壓縮資料夾中的所有檔案
使用第三方包:pylzma和py7zlib
注:pylzma包含py7zlib包,所以只需要安裝pylzma即可
pip install pylzma
安裝和測試過程如下:
由於博主並沒有找到該包的任何官方文件,所以所有的api都得一邊google,一邊看原始碼,很痛苦
fp = open("train.7z",'rb')
#生成乙個archive物件
archive = py7zlib.archive7z(fp)
#讀取檔案中所有的檔名
names = archive.getnames()
#search
starttime = time.time()
#根據檔名返回檔案的archivefile類
member = archive.getmember(names[0])
end_1_time = time.time()
print
"search time is {}".format(end_1_time-starttime)
#read data
#讀取檔案的所有資料
data = member.read()
end_2_time = time.time()
print
"read time is {}".format(end_2_time-end_1_time)
讀出的data資料就是names[0]檔案的內容
問題:由於分析的檔案比較大,在train.7z檔案中有2w+個子檔案,在讀取檔案的過程中會很慢
因為py7zlib的read函式是一次將檔案中的所有資料全部都讀出來,所以一開始我認為是讀取的內容太大,導致讀取檔案的速度太慢。
但是最後通過分析可以得出是因為子檔案的位置太靠後,才導致了檔案讀取速度較慢。
詳情消耗時間可以看下圖。
讀取第乙個檔案:
讀取第9000個檔案耗時:
無奈水平太低,從他的原始碼中也看不出來為什麼檔案耗時這麼大,
最後將所有的檔案解壓出來,然後分析的。
[stackoverflow]example of how to use pylzma:
BAT呼叫7z壓縮程式
echo off set zip c program files 7 zip 7z.exe set timestamp date 6,4 date 0,2 date 3,2 set dir c temp echo zip echo dir echo timestamp explorer arc zi...
7z壓縮與解壓命令
在寫很多任務具的時候,可能會用到7z命令來進行壓縮與解壓操作。這裡記錄二個比較常用的操作 壓縮 解壓。在dos視窗下輸入7z命令,會顯示7z的使用引數詳情 usage 7z a add files to archive b benchmark d delete files from archive ...
命令列壓縮解壓7z
命令列壓縮解壓一 7z 1 簡介 7z,全稱7 zip,是一款開源軟體。是目前公認的壓縮比例最大的壓縮解壓軟體。主頁 中文主頁 主要特徵 全新的lzma演算法加大了7z格式的壓縮比 支援格式 壓縮 解壓縮 7z,xz,bzip2,gzip,tar,zip 僅解壓縮 arj,cab,chm,cpio,...