zipfile是python里用來做zip格式編碼的壓縮和解壓縮的,由於是很常見的zip格式,所以這個模塊使用頻率也是比較高的。
zipfile模塊常用的一些操作和方法:
一、is_zipfile(filename),測試filename的文件,看它是否是個有效的zipfile
二、ZipFile(filename[,mode[,compression[,allowZip64]]])
- filename:文件對象;例如:’xxx.zip’
- mode:可選r,w,a代表不同的打開文件的方式;r只讀;w重寫;a添加;
- compression:指出這個zipfile用什么壓縮方法,默認是ZIP_STORED,另一種選擇是ZIP_DEFLATED;
- allowZip64:是個bool型變量,當設置為True的時候就是說可以用來創建大小大於2G的zip文件,默認值是True;
1、z.close(),關閉文件,結束時必須要有
2、z.extract(member, path=None, pwd=None),從zip中提取一個文件,member可以是namelist中的某個文件,也可以從z.infolist 中得到filename,將它放到指定的path下,pwd是密碼,用於被加密的zip文件;如果path沒有指定,比如在腳本ipython下運行,會提取保存在腳本默認根目錄下,生成test_file文件,並提取出a.text文件保存在文件夾里;
3、z.extractall(path[,pwd]),將所有文件按照namelist中顯示得那樣的目錄結構從當前zip中提取出來並放到path下。//這兩個extract的path若不存在都會自動創建出來的,且這個path必須是個目錄,解壓時一定是把一個文件,包含其相對zip包路徑的所有目錄一起解壓出來。
4、z.namelist(),返回一個列表,內容是zip文件中所有子文件的path(相對於zip文件包而言的)。托福報名費相當於是一個保存了zip內部目錄結構的列表
5、z.infolist(),返回一個列表,內容是每個zip文件中子文件的ZipInfo對象,這個對象有上文中提到的那些字段
6、z.printdir(),將zip文件的目錄結構打印到stdout上,包括每個文件的path,修改時間和大小
7、z.open(name[,mode[,pwd]]),獲取一個子文件的文件對象,可以將其用來read,readline,write等等操作
8、z.setpassword(psw),可以為zip文件設置默認密碼
9、z.testzip(),讀取zip中的所有文件,驗證他們的CRC校驗和。返回第一個損壞文件的名稱,如果所有文件都是完整的就返回None
10、z.write(filename[,arcname[,compression_type]]),將zip外的文件filename寫入到名為arcname的子文件中(當然arcname也是帶有相對zip包的路徑的),compression_type指定了壓縮格式,也是ZIP_STORED或ZIP_DEFLATED。零基礎學雅思z的打開方式一定要是w或者a才能順利寫入文件。
11、簡明使用解壓縮文件代碼:
- 解壓文件讀取:
- 壓縮進文件寫入
於是我為了方便使用,創建了自已的一個 ZFile 類,主要是實現象 winrar 的右鍵菜單中的壓縮到的功能–即將一個zip文件壓縮到指定目錄,自動創建相應的子目錄。再有就是方便生成 zip 文件。類源碼為: