the Python challenge中第6關使用到zipfile模塊,於是記錄下zipfile的使用
zip日常使用只要是壓縮跟解壓操作,於是從這里入手
1、壓縮
f=zipfile.ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False)
創建一個zip文件對象,壓縮是需要把mode改為‘w’,這個是源碼中的注釋Open the ZIP file with mode read "r", write "w" or append "a",a為追加壓縮,不會清空原來的zip
f.write(filename)
將文件寫入zip文件中,即將文件壓縮
f.close()
將zip文件對象關閉,與open一樣可以使用上下文with as
import zipfile with zipfile.ZipFile('test.zip', mode='w') as zipf: zipf.write('channel.zip') zipf.write('zip_test.py') zipf = zipfile.ZipFile('test.zip') print zipf.namelist()
2、解壓
f.extract(directory)和f.exractall(directory)
import zipfile zipf = zipfile.ZipFile('test.zip') zipf.extractall('channel1')#將所有文件解壓到channel1目錄下
高級應用
1 zipfile.is_zipfile(filename)
判斷一個文件是不是壓縮文件
2 ZipFile.namelist()
返回文件列表
3 ZipFile.open(name[, mode[, password]])
打開壓縮文檔中的某個文件
if zipfile.is_zipfile('test.zip'): #is_zipfile() 判斷是否似zip文件 f = zipfile.ZipFile('test.zip') files = f.namelist() #namelist() 返回zip壓縮包中的所有文件 print 'files:', files mess = f.open('channel/readme.txt') #打開zip壓縮包中的某個文件,可讀可寫 print 'mess:', mess.read() f.close()