寫在之前
壓縮包是網際網路上軟體發布的標準格式,同時對於系統管理很有用處。當我們需要將多份檔案傳送給別人的時候,最好通過壓縮包的形式傳送,還有在備份某些檔案的時候,為了減少磁碟空間的占用,也需要對備份的資料進行壓縮。
python 中有一系列對壓縮包進行處理的工具,包括程式設計客棧建立壓縮包,解壓壓縮包以及獲取壓縮包中的檔案列表等,今天的文章,我們就來學習一下與壓縮包相關的 python 標準庫。
管理 zip 壓縮包
在大多數情況下,我們在 windows 下使用 zip 進行壓縮,在 linux 下使用 gzip 或者 bzip2 進行壓縮。這一部分,我們來看一下如何管理 zip 格式的壓縮包。
1.讀取 zip
python 管理 zip 主要使用程式設計客棧 zipfile 模組,這個模組裡有乙個名為 zipfile 的物件,我們通過將 zip 壓縮包的名稱傳遞給這個物件的函式,這樣就開啟了乙個 zip 壓縮包並獲得乙個 zipfile 的物件,然後使用這個物件的方法去讀取 zip 壓縮包裡的內容。具體如下所示:
>>> import zipfile
>>> first_zip = zipfile.zipfile('test.zip')
>>> first_zip.namelist()
namelist() 是 zipfile 中的常用方法,初次以外還比較常用的方法有 extract,extractall:
2.建立 zip
與檔案的方式類似,如果想要建立乙個 zip 格式的壓縮檔案,必須要以「寫」的模式開啟 zip 檔案,需要說一點的是,zipfile 的物件是通過 write 方法來新增檔案的。具體如下所示:
>>> import zipfile
>>> my_zip = zipfile.zipfile('test.zip', 'w')
>>> my_zip.write('test.py')
>>> my_zip.close()
上面的**是建立了乙個名為 test.zip 的新 zip 檔案,它包含 test.py 壓縮後的內容。
管理 tar 包
tar 命令一般是在 linux 系統中建立壓縮包,並且可以指定壓縮包的壓縮演算法。此外 tar 命令也可以建立乙個不壓縮的 tar 包,僅僅是為了能把多個檔案進行打包便於傳輸。這也就是說,我們在使用 tar 命令的時候,既可以建立普通的 tar 包,也可以建立使用壓縮演算法壓縮過的壓縮包。
python 中使用 tarfile 標準庫提供了 tar 命令提供的功能,我們也可以使用它建立乙個壓縮或者乙個非壓縮的 tar 包。我之前很多次說過 python 的簡潔優雅體現在方方面面,在這裡體現在 tarfile 模組比 linux 下的 tar 命令用起來更加舒服。
1.讀取 tar 包
同樣讀取 tar 包和 python 的檔案管理操作類似,讀寫乙個壓縮包,需要執行開啟操作,同時指定開啟模式,並且在操作完成以後關閉檔案,當然在這裡我們可以使用上下文管理器來保證檔案的關閉邏輯。具體如下所示:
>>> import tarfile
>>> with tarfile.open('etc.tar') as t:
... for member in t.getmembers():
... print(member.name)
上面的**中,匯入 tarfile 庫,使用預設的讀模式開啟 tar 包,tarfile.open() 函式返回乙個 tarfile 物件,這個物件表示當前開啟的 tar 包,我們可以通過這個物件的方法操作和讀取 tar 包中的內容。
tarfile 中有不少函式程式設計客棧,其中最常用的有 getnames,extract,extractall 函式:
2.建立 tar 包
從上面的例子中可以看到,讀乙個 tar 包與讀乙個檔案類似,都是以「讀」的方式開啟檔案並得到乙個物件,然後通過這個物件的方法去操作檔案。同樣建立乙個 tar 包和寫乙個檔案也比較類似。具體如下所示:
>>> import tarfile
>>> with tarfile.open('etc.tar', mode='w') as f:
... f.add('test.py')
上面的**中,由於我們是建立乙個 tar 包,所以以「寫」模式開啟 tar 包並得到乙個 tarfile 物件,然後使用 tarfile 物件的 add 方法將 test.py 檔案新增到 tar 包中。
3.tarfile 讀取和建立壓縮包
上面我們用 targfile 建立和讀取未壓縮的 tar 包,但是一般情況下,我們建立 tar 包的時候都會使用壓縮演算法進行壓縮,以加快傳輸速度和減少占用的磁碟空間。
使用 tarfile 建立和讀取壓縮包非常簡單,只要在開啟檔案時指定壓縮演算法即可。對於 tarfile 的 open 函式,以「開啟模式:壓縮演算法」的形式開啟即可。具體如下所示:
a. 讀取乙個用 gzip 演算法壓縮的 tar 包:
>>> import tarfile
>>> with tarfile.open('etc.tar', mode='r:gz') awww.cppcns.coms f:
b. 建立乙個用 bzip2 演算法壓縮的 tar 包:
>>> import tarfile
>>> with tarfile.open('etc.tar', mode='w:bz2') as f:
用pigz代替gzip 並行壓縮軟體
by yejr on 03 十二月 2012 pig是個啥東東?官網 一句話簡介 a parallel implementation of gzip for modernmulti processor,multi core machines。簡單的說,就是支援並行的gzip。廢話不多說,開始測試。p...
python 9 簡易壓縮軟體
importtkinter importtkinter.filedialog importzipfile importos importtkinter.messagebox classysuo def init self self.root tkinter.tk self.root.title 我的...
用pdf壓縮軟體壓縮pdf檔案的方法
自己倖倖苦苦整理的文件資料,刪除又捨不得,上傳又提示檔案過大。這時怎麼辦呢?其實我們可以將檔案進行壓縮,只要借助pdf壓縮軟體就行啦。下面我們看看pdf壓縮器怎麼壓縮pdf的大小。安裝好之後開啟使用,先選擇格式 pdf壓縮 選擇好格式之後新增檔案,單擊新增檔案 資料夾按鈕,找到檔案新增就行 新增好檔...