?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-420913.html
Python學(xué)習(xí)第九篇:zipfile 庫(kù)操作壓縮包
——
活動(dòng)地址:CSDN21天學(xué)習(xí)挑戰(zhàn)賽
- zipfile是python里用來(lái)做zip格式編碼的壓縮和解壓縮的 zipfile里有兩個(gè)非常常用的class,
- 分別是ZipFile和ZipInfo, 在絕大多數(shù)的情況下,我們只需要使用這兩個(gè)class就可以了。
ZipFile是主要的類(lèi),用來(lái)創(chuàng)建和讀取zip文件。
ZipInfo是存儲(chǔ)的zip文件的每個(gè)文件的信息的。
——
先準(zhǔn)備一個(gè)zip 文件進(jìn)行測(cè)試,壓縮包內(nèi)有三個(gè)文件。
——
zipfile.is_zipfile() 方法
測(cè)試filename的文件,看它是否是個(gè)有效的zipfile,有效則返回True,否則返回False
import zipfile
path = 'e:/desktop/test/test.zip'
print(zipfile.is_zipfile(path))
print(zipfile.is_zipfile('e:/desktop/test/test2.zip'))
創(chuàng)建了 test.zip 這個(gè)壓縮包文件,所以返回 true ,test2.zip 這個(gè)文件不存在,返回 false
——
ZipFile類(lèi)的常用方法
ZipFile.close()
: 關(guān)閉文件,結(jié)束時(shí)必須要有
ZipFile.getinfo(name)
: 獲取zip文檔內(nèi)指定文件的信息。返回一個(gè)zipfile.ZipInfo對(duì)象,它包括文件的詳細(xì)信息。
ZipFile.infolist()
: 獲取zip文檔內(nèi)所有文件的信息,返回一個(gè)zipfile.ZipInfo的列表。
ZipFile.namelist()
: 獲取zip文檔內(nèi)所有文件的名稱(chēng)列表。
ZipFile.extract(member[, path[, pwd]])
:將zip文檔內(nèi)的指定文件解壓到當(dāng)前目錄。
ZipFile.extractall([path[, members[, pwd]]])
: 解壓zip文檔中的所有文件到當(dāng)前目錄。
ZipFile.printdir()
: 將zip文檔內(nèi)的信息打印到控制臺(tái)上。
ZipFile.setpassword(pwd)
: 設(shè)置zip文檔的密碼,這個(gè)方法我用的時(shí)候不好使,暫時(shí)沒(méi)找到問(wèn)題所在,建議要加密碼使用 Python調(diào)用linux系統(tǒng)命令加密,或者調(diào)用windows里安裝的壓縮軟件加密。
ZipFile.read(name[, pwd])
: 獲取zip文檔內(nèi)指定文件的二進(jìn)制數(shù)據(jù)。
ZipFile.write(filename[, arcname[, compress_type]])
:將指定文件添加到zip文檔中。
ZipFile.writestr(zinfo_or_arcname, bytes)
: writestr()支持將二進(jìn)制數(shù)據(jù)直接寫(xiě)入到壓縮文檔。
——
ZipFile(filename[,mode[,compression[,allowZip64]]])
創(chuàng)建一個(gè)ZipFile對(duì)象,表示一個(gè)zip文件。后面要使用其它方法,前提都要在這個(gè)創(chuàng)建好的對(duì)象基礎(chǔ)上操作。
參數(shù)說(shuō)明:
-
filename
:文件對(duì)象;例如:’xxx.zip’ -
mode
:可選r,w,a代表不同的打開(kāi)文件的方式;默認(rèn)為’r’只讀;'w’重寫(xiě);'a’添加; -
compression
:指出這個(gè)zipfile用什么壓縮方法,默認(rèn)是ZIP_STORED,另一種選擇是ZIP_DEFLATED; -
allowZip64
:是個(gè)bool型變量,當(dāng)設(shè)置為T(mén)rue的時(shí)候就是說(shuō)可以用來(lái)創(chuàng)建大小大于2G的zip文件,默認(rèn)值是True;
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path)
file2 = ZipFile(path,'w')
file3 = ZipFile(path,'a')
print(file)
print(file2)
print(file3)
——
ZipFile.close()
關(guān)閉文件,結(jié)束時(shí)必須要有
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path)
print(file)
file.close()
print(file)
——
ZipFile.getinfo(name)
獲取zip文檔內(nèi)指定文件的信息。返回一個(gè)zipfile.ZipInfo對(duì)象,它包括文件的詳細(xì)信息。
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path)
print(file.getinfo('test1.txt'))
getinfo()
中的 name
參數(shù)必須填寫(xiě),且只指定一個(gè)文件的信息。
——
ZipFile.infolist()
獲取zip文檔內(nèi)所有文件的信息,返回一個(gè)zipfile.ZipInfo的列表。
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path)
print(file.infolist())
可以看到輸出了全部三個(gè)文件的信息。
——
ZipFile.namelist()
獲取zip文檔內(nèi)所有文件的名稱(chēng)列表。
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path)
print(file.namelist())
——
ZipFile.extract(member[, path[, pwd]])
將zip文檔內(nèi)的指定文件解壓到當(dāng)前目錄。
參數(shù)說(shuō)明:
- 參數(shù)
member
指定要解壓的文件名稱(chēng)或?qū)?yīng)的ZipInfo對(duì)象; - 參數(shù)
path
指定了解析文件保存的文件夾; - 參數(shù)
pwd
為解壓密碼。
指定壓縮包內(nèi)的一個(gè)文件解壓出來(lái)
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path)
file.extract('test1.txt','e:/desktop/test/')
file.close()
將指定文件 'test1.txt'
解壓到 'e:/desktop/test/'
目錄下。
運(yùn)行代碼之后可以看到成功解壓出來(lái)了。這里沒(méi)有用到 pwd 解壓密碼參數(shù),因?yàn)檫@里測(cè)試的壓縮包沒(méi)有加密。
——
ZipFile.extractall(member,path,pwd)
解壓zip文檔中的所有文件到當(dāng)前目錄。
- 參數(shù)
members
的默認(rèn)值為zip文檔內(nèi)的所有文件名稱(chēng)列表,也可以自己設(shè)置,選擇要解壓的文件名稱(chēng)。 - path和pwd與前面的
ZipFile.extract()
一樣,表示解壓路徑和解壓密碼。
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path)
file.extractall('e:/desktop/test/')
file.close()
執(zhí)行代碼之后,里面的全部三個(gè)文本文件都解壓出來(lái)了。
——
ZipFile.printdir()
將zip文檔內(nèi)的信息打印到控制臺(tái)上。
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path)
print(file.printdir())
file.close()
——
ZipFile.read(name[, pwd])
獲取zip文檔內(nèi)指定文件的二進(jìn)制數(shù)據(jù)。
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path)
b = file.read('test1.txt')
print(b)
print(type(b))
file.close()
可以看到打印了 test1.txt 的內(nèi)容,不過(guò)是二進(jìn)制數(shù)據(jù)。
——
ZipFile.write(filename[, arcname[, compress_type]])
將指定文件添加到zip文檔中。
參數(shù)說(shuō)明:
- 參數(shù)
filename
為文件路徑, - 參數(shù)
arcname
為添加到zip文檔之后保存的名稱(chēng), - 參數(shù)
compress_type
表示壓縮方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。
先創(chuàng)建一個(gè) test4.txt ,用于等下寫(xiě)入壓縮包。
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path,'a')
file.write('e:/desktop/test/test4.txt','123.txt')
file.close()
執(zhí)行代碼后,可以看到 test4.txt 已經(jīng)寫(xiě)進(jìn)去了,并且保存在壓縮包內(nèi)的文件名為 123.txt
——
ZipFile.writestr(zinfo_or_arcname, bytes)
writestr()
支持將二進(jìn)制數(shù)據(jù)直接寫(xiě)入到壓縮文檔。
from zipfile import ZipFile
path = 'e:/desktop/test/test.zip'
file = ZipFile(path,'a')
print(file.printdir())
file.writestr('test5.txt','here is test5')
print('-------------------------------')
print(file.printdir())
file.close()
在壓縮包中創(chuàng)建了一個(gè) test5.txt 文件。
——
ZipInfo 類(lèi)的常用方法
ZipInfo.filename
: 獲取文件名稱(chēng)。ZipInfo.date_time
: 獲取文件最后修改時(shí)間。返回一個(gè)包含6個(gè)元素的元組:(年, 月, 日, 時(shí), 分, 秒)ZipInfo.compress_type
: 壓縮類(lèi)型。ZipInfo.comment
: 文檔說(shuō)明。ZipInfo.extr
: 擴(kuò)展項(xiàng)數(shù)據(jù)。ZipInfo.create_system
: 獲取創(chuàng)建該zip文檔的系統(tǒng)。ZipInfo.create_version
: 獲取 創(chuàng)建zip文檔的PKZIP版本。ZipInfo.extract_version
: 獲取 解壓zip文檔所需的PKZIP版本。ZipInfo.reserved
: 預(yù)留字段,當(dāng)前實(shí)現(xiàn)總是返回0。ZipInfo.flag_bits
: zip標(biāo)志位。ZipInfo.volume
: 文件頭的卷標(biāo)。ZipInfo.internal_attr
: 內(nèi)部屬性。ZipInfo.external_attr
: 外部屬性。ZipInfo.header_offset
: 文件頭偏移位。ZipInfo.CRC
: 未壓縮文件的CRC-32。ZipInfo.compress_size
: 獲取壓縮后的大小。ZipInfo.file_size
: 獲取未壓縮的文件大小。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-420913.html
?
到了這里,關(guān)于Python學(xué)習(xí)第九篇:zipfile 庫(kù)操作壓縮包的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!