Python管理zip主要使用zipfile模塊,這個模塊裏有一個名爲 ZipFile 的對象,咱們經過將 zip 壓縮包的名稱傳遞給這個對象的函數,這樣就打開了一個 zip 壓縮包並得到一個 ZipFile 的對象,而後使用這個對象的方法去讀取 zip 壓縮包裏的內容。具體以下所示:算法
import zipfile first_zip = zipfile.ZipFile('test.zip') file_list = first_zip.namelist() print(file_list)
namelist() 是 ZipFile 中的經常使用方法,除此之外比較經常使用的方法還有 extract,extractall:app
若是想要建立一個zip格式的壓縮文件,必需要以「寫」的模式打開 zip 文件,能夠是w或aide
import zipfile my_zip = zipfile.ZipFile('test2.zip', 'w') my_zip.write('serilizer.py') my_zip.close()
上面的代碼是建立了一個名爲test2.zip的新zip壓縮包,壓縮包裏包含serilizer.py這個問題件,注意,若是同名壓縮包已經存在,使用w模式會刪除壓縮包內原有的問題件,若是對已有壓縮包添加文件的話可使用a模式函數
tar 命令通常是在 Linux 系統中建立壓縮包,此外 tar 命令也能夠建立一個不壓縮的 tar 包,僅僅是爲了能把多個文件進行打包便於傳輸。這也就是說,咱們在使用 tar 命令的時候,既能夠建立普通的 tar 包,也能夠建立使用壓縮算法壓縮過的壓縮包。code
Python 中使用 tarfile 標準庫提供了 tar 命令提供的功能,咱們也可使用它建立一個壓縮或者一個非壓縮的 tar 包。對象
import tarfile with tarfile.open('etc.tar', mode='w') as f: f.add('apps.py')
上面的代碼中,因爲咱們是建立一個 tar 包,因此以「寫」模式打開 tar 包並獲得一個 TarFile 對象,而後使用 TarFile 對象的 add 方法將 test.py 文件添加到 tar 包中。ip
import tarfile with tarfile.open('etc.tar') as t: for member in t.getmembers(): print(member.name)
上面的代碼中,導入 tarfile 庫,使用默認的讀模式打開 tar 包,tarfile.open() 函數返回一個 TarFile 對象,這個對象表示當前打開的 tar 包,咱們能夠經過這個對象的方法操做和讀取 tar 包中的內容。get
tarfile 中有很多函數,其中最經常使用的有 getnames,extract,extractall 函數:it
上面咱們用 targfile 建立和讀取未壓縮的 tar 包,可是通常狀況下,咱們建立 tar 包的時候都會使用壓縮算法進行壓縮,以加快傳輸速度和減小佔用的磁盤空間。class
使用 tarfile 建立和讀取壓縮包很是簡單,只要在打開文件時指定壓縮算法便可。對於 tarfile 的 open 函數,以「打開模式:壓縮算法」的形式打開便可。具體以下所示:
import tarfile with tarfile.open('etc.tar.gz', mode='w:gz') as f: f.add('apps.py')
import tarfile with tarfile.open('test.tar.gz', 'r:gz') as f: for member in f.getmembers(): print(member.name)