溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

用 Python 管理壓縮包

發(fā)布時(shí)間:2020-07-12 08:06:36 來源:網(wǎng)絡(luò) 閱讀:304 作者:jedi911 欄目:編程語言

管理 zip 壓縮包

讀取zip壓縮包內(nèi)文件列表

Python管理zip主要使用zipfile模塊,這個(gè)模塊里有一個(gè)名為 ZipFile 的對(duì)象,我們通過將 zip 壓縮包的名稱傳遞給這個(gè)對(duì)象的函數(shù),這樣就打開了一個(gè) zip 壓縮包并獲得一個(gè) ZipFile 的對(duì)象,然后使用這個(gè)對(duì)象的方法去讀取 zip 壓縮包里的內(nèi)容。具體如下所示:

import zipfile
first_zip = zipfile.ZipFile('test.zip')
file_list = first_zip.namelist()
print(file_list)

namelist() 是 ZipFile 中的常用方法,除此以外比較常用的方法還有 extract,extractall:

  • namelist:返回一個(gè)列表,列表中是 zip 中包含的所有文件和文件夾;
  • extract:從 zip 中提取單個(gè)文件
  • extarctall:從 zip 文件中提取所有文件

創(chuàng)建zip壓縮包

如果想要?jiǎng)?chuàng)建一個(gè)zip格式的壓縮文件,必須要以「寫」的模式打開 zip 文件,可以是w或a

import zipfile
my_zip = zipfile.ZipFile('test2.zip', 'w')
my_zip.write('serilizer.py')
my_zip.close() 

上面的代碼是創(chuàng)建了一個(gè)名為test2.zip的新zip壓縮包,壓縮包里包含serilizer.py這個(gè)問題件,注意,如果同名壓縮包已經(jīng)存在,使用w模式會(huì)刪除壓縮包內(nèi)原有的問題件,如果對(duì)已有壓縮包添加文件的話可以使用a模式

管理tar包

tar 命令一般是在 Linux 系統(tǒng)中創(chuàng)建壓縮包,此外 tar 命令也可以創(chuàng)建一個(gè)不壓縮的 tar 包,僅僅是為了能把多個(gè)文件進(jìn)行打包便于傳輸。這也就是說,我們?cè)谑褂?tar 命令的時(shí)候,既可以創(chuàng)建普通的 tar 包,也可以創(chuàng)建使用壓縮算法壓縮過的壓縮包。

Python 中使用 tarfile 標(biāo)準(zhǔn)庫(kù)提供了 tar 命令提供的功能,我們也可以使用它創(chuàng)建一個(gè)壓縮或者一個(gè)非壓縮的 tar 包。

創(chuàng)建tar包

import tarfile
with tarfile.open('etc.tar', mode='w') as f:
    f.add('apps.py')

上面的代碼中,由于我們是創(chuàng)建一個(gè) tar 包,所以以「寫」模式打開 tar 包并得到一個(gè) TarFile 對(duì)象,然后使用 TarFile 對(duì)象的 add 方法將 test.py 文件添加到 tar 包中。

讀取tar包的文件列表

import tarfile
with tarfile.open('etc.tar') as t:
    for member in t.getmembers():
        print(member.name)

上面的代碼中,導(dǎo)入 tarfile 庫(kù),使用默認(rèn)的讀模式打開 tar 包,tarfile.open() 函數(shù)返回一個(gè) TarFile 對(duì)象,這個(gè)對(duì)象表示當(dāng)前打開的 tar 包,我們可以通過這個(gè)對(duì)象的方法操作和讀取 tar 包中的內(nèi)容。

tarfile 中有不少函數(shù),其中最常用的有 getnames,extract,extractall 函數(shù):

  • getnames:獲取 tar 包中每個(gè)文件的對(duì)象,是個(gè)列表;
  • extract:提取單個(gè)文件;
  • extractall:提取所有文件

tarfile 讀取和創(chuàng)建壓縮包

上面我們用 targfile 創(chuàng)建和讀取未壓縮的 tar 包,但是一般情況下,我們創(chuàng)建 tar 包的時(shí)候都會(huì)使用壓縮算法進(jìn)行壓縮,以加快傳輸速度和減少占用的磁盤空間。

使用 tarfile 創(chuàng)建和讀取壓縮包非常簡(jiǎn)單,只要在打開文件時(shí)指定壓縮算法即可。對(duì)于 tarfile 的 open 函數(shù),以「打開模式:壓縮算法」的形式打開即可。具體如下所示:

創(chuàng)建一個(gè)用gzip算法壓縮的tar包

import tarfile
with tarfile.open('etc.tar.gz', mode='w:gz') as f:
    f.add('apps.py')

讀取一個(gè)用gzip算法壓縮的tar包

import tarfile
with tarfile.open('test.tar.gz', 'r:gz') as f:
    for member in f.getmembers():
        print(member.name)

參考鏈接
https://mp.weixin.qq.com/s/mic5BtABQYBxMCxvw6t3Bw

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI