Python實(shí)現(xiàn)文件壓縮和解壓的示例代碼
大家可能都熟悉.zip格式的文件。它可以把多個(gè)文件,壓縮成一個(gè)文件。這在網(wǎng)絡(luò)上傳輸時(shí)很有用,而且節(jié)省硬盤(pán)空間。
接下來(lái),我們使用Python實(shí)現(xiàn)壓縮和解壓。
讀取ZIP文件信息
要讀取ZIP文件的內(nèi)容,首先必須創(chuàng)建一個(gè)ZipFile對(duì)象。ZipFile對(duì)象在概念上與File對(duì)象相似。
要?jiǎng)?chuàng)建一個(gè) ZipFile 對(duì)象,就調(diào)用 zipfile.ZipFile()函數(shù),向它傳入一個(gè)字符串,表示.zip 文件的文件名。 請(qǐng)注意,zipfile 是 Python 模塊的名稱(chēng),ZipFile()是函數(shù)的名稱(chēng)。
import zipfile# 傳入壓縮文件zfile.zip獲取相關(guān)信息zip_file = zipfile.ZipFile(’zfile.zip’)# 獲取壓縮文件中的內(nèi)容f_content = zip_file.namelist()# 壓縮前的大小f_size = zip_file.getinfo(’zfile/a.txt’).file_size# 壓縮后的大小c_size = zip_file.getinfo(’zfile/a.txt’).compress_size
ZipFile 對(duì)象有一個(gè) namelist()方法,返回 ZIP 文件中包含的所有文件和文件夾 的字符串的列表。這些字符串可以傳遞給 ZipFile 對(duì)象的 getinfo()方法,返回一個(gè)關(guān) 于特定文件的 ZipInfo 對(duì)象。ZipInfo 對(duì)象有自己的屬性,諸如表示字節(jié)數(shù)的 file_size 和 compress_size,它們分別表示原來(lái)文件大小和壓縮后文件大小。ZipFile 對(duì)象表示 整個(gè)歸檔文件,而 ZipInfo 對(duì)象則保存該歸檔文件中每個(gè)文件的有用信息。
從 ZIP 文件中解壓縮
ZipFile 對(duì)象的 extractall()方法從 ZIP 文件中解壓縮所有文件和文件夾,放到當(dāng) 前工作目錄中。
import zipfilezip_file = zipfile.ZipFile(’zfile.zip’)# 解壓zip_extract = zip_file.extractall()zip_extract.close()
運(yùn)行這段代碼后, example.zip 的內(nèi)容將被解壓縮到 C:。 或者, 你可以向 extractall()傳遞的一個(gè)文件夾名稱(chēng),它將文件解壓縮到那個(gè)文件夾,而不是當(dāng)前工作 目錄。如果傳遞給 extractall()方法的文件夾不存在,它會(huì)被創(chuàng)建。例如,如果你用 exampleZip.extractall(’C: delicious’)取代處的調(diào)用,代碼就會(huì)從 example.zip 中解壓 縮文件,放到新創(chuàng)建的 C:delicious 文件夾中。ZipFile 對(duì)象的 extract()方法從 ZIP 文件中解壓縮單個(gè)文件。
創(chuàng)建和添加到 ZIP 文件
要?jiǎng)?chuàng)建你自己的壓縮 ZIP 文件,必須以“寫(xiě)模式”打開(kāi) ZipFile 對(duì)象,即傳入’w’ 作為第二個(gè)參數(shù)(這類(lèi)似于向 open()函數(shù)傳入’w’,以寫(xiě)模式打開(kāi)一個(gè)文本文件)。
如果向 ZipFile 對(duì)象的 write()方法傳入一個(gè)路徑,Python 就會(huì)壓縮該路徑所指 的文件,將它加到 ZIP 文件中。write()方法的第一個(gè)參數(shù)是一個(gè)字符串,代表要添 加的文件名。第二個(gè)參數(shù)是“壓縮類(lèi)型”參數(shù),它告訴計(jì)算機(jī)使用怎樣的算法來(lái)壓 縮文件??梢钥偸菍⑦@個(gè)值設(shè)置為 zipfile.ZIP_DEFLATED(這指定了 deflate 壓縮 算法,它對(duì)各種類(lèi)型的數(shù)據(jù)都很有效)。
import zipfilezip_file = zipfile.ZipFile(’new.zip’,’w’)# 把zfile整個(gè)目錄下所有內(nèi)容,壓縮為new.zip文件zip_file.write(’zfile’,compress_type=zipfile.ZIP_DEFLATED)# 把c.txt文件壓縮成一個(gè)壓縮文件# zip_file.write(’c.txt’,compress_type=zipfile.ZIP_DEFLATED)zip_file.close()
這段代碼將創(chuàng)建一個(gè)新的 ZIP 文件,名為 new.zip,它包含 spam.txt 壓縮后的內(nèi)容。要記住,就像寫(xiě)入文件一樣,寫(xiě)模式將擦除 ZIP 文件中所有原有的內(nèi)容。如果 只是希望將文件添加到原有的 ZIP 文件中,就要向 zipfile.ZipFile()傳入’a’作為第二 個(gè)參數(shù),以追加模式打開(kāi) ZIP 文件。
以上就是Python實(shí)現(xiàn)文件壓縮和解壓的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于python 壓縮和解壓的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 使用Python和百度語(yǔ)音識(shí)別生成視頻字幕的實(shí)現(xiàn)2. 淺談SpringMVC jsp前臺(tái)獲取參數(shù)的方式 EL表達(dá)式3. Java封裝數(shù)組實(shí)現(xiàn)包含、搜索和刪除元素操作詳解4. Gitlab CI-CD自動(dòng)化部署SpringBoot項(xiàng)目的方法步驟5. ajax請(qǐng)求添加自定義header參數(shù)代碼6. JAVA上加密算法的實(shí)現(xiàn)用例7. 基于javascript處理二進(jìn)制圖片流過(guò)程詳解8. Django-migrate報(bào)錯(cuò)問(wèn)題解決方案9. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)10. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作?!钡脑幃悊?wèn)題……
