python压缩_Python札记 -- 文件压缩
在日常工作當中免不了要對文件進行壓縮,Python標準庫里也提供了實現壓縮功能的模塊。
一、簡單的例子
首先了解一下壓縮單個文件在Python中怎么實現。竹風建了個測試文件夾zip_text,里面有test.apk和zip_model_test.py兩個文件。如下圖所示:
目標是將test.apk打包成test.zip。編寫如下代碼:
1 #!/usr/bin/env python
2 #coding:utf-8
3
4 importzipfile5
6 file = '/home/jacky/tmp/zip_test/test.apk'
7
8 f = zipfile.ZipFile('test.zip', 'w', zipfile.ZIP_DEFLATED)9 f.write(file)10 f.close()
首先使用ZipFile打開一個壓縮文件,然后將需要壓縮的文件通過write方法傳入,最后close即可。跟普通文件的讀寫操作是一致的。執行后的效果如下:
二、重寫壓縮包里的目錄結構
壓縮單個文件的功能已經實現了,美中不足的是,壓縮包里面的目錄結構跟傳進去的參數結構是一樣的。
可以通過在write方法傳遞arcname參數來設置路徑(wirte的函數原型為ZipFile.write(filename[, arcname[, compress_type]]))。修改代碼如下:
1 #!/usr/bin/env python
2 #coding:utf-8
3
4 importzipfile5
6 file = '/home/jacky/tmp/zip_test/test.apk'
7
8 f = zipfile.ZipFile('test.zip', 'w', zipfile.ZIP_DEFLATED)9 f.write(file, '/res/new_file_name.apk')10 f.close()
三、壓縮目錄
但是更多的情況是要壓縮一個文件夾。直接將文件夾作為參數傳入,會有什么樣的效果呢?
1 #!/usr/bin/env python
2 #coding:utf-8
3
4 importzipfile5
6 file = '/home/jacky/tmp/zip_test/'
7
8 f = zipfile.ZipFile('test.zip', 'w', zipfile.ZIP_DEFLATED)9 f.write(file)10 f.close()
執行代碼后,的確生成了一個壓縮文件,可惜解壓這個文件的時候,卻發現里面只有文件夾的結構,一個文件都沒有。。。
想達到壓縮文件夾的效果,得借助一下glob模塊了。借助glob.glob(pathname)來獲得一個由指定文件夾下的文件名組成的列表,然后對此進行遍歷,代碼如下:
1 #!/usr/bin/env python
2 #coding:utf-8
3
4 importzipfile5 importglob6
7 files = glob.glob('/home/jacky/tmp/zip_test/zip_dir_test/*')8 f = zipfile.ZipFile('test.zip', 'w', zipfile.ZIP_DEFLATED)9
10 for file infiles:11 f.write(file)12 f.close()
效果如下:
生成的壓縮包還可以更完美些,比如保留源文件的名字,修改一下壓縮包里面的目錄結構。借組os模塊的os.path.basename(path),可以取得文件名,修改后代碼如下:
1 #!/usr/bin/env python
2 #coding:utf-8
3
4 importzipfile5 importglob6 importos7
8 files = glob.glob('/home/jacky/tmp/zip_test/zip_dir_test/*')9 f = zipfile.ZipFile('test.zip', 'w', zipfile.ZIP_DEFLATED)10
11 for file infiles:12 f.write(file, '/MyDirPath/' +os.path.basename(file))13 f.close()
這樣就可以根據實際需要生成壓縮包里面的目錄結構了。
四、其他功能
既然可以壓縮,當然Python也提供了解壓的方法。ZipFile.extractall([path[, members[, pwd]]]),path為解壓路徑,members為需要解壓的文件,另外如果壓縮文件有密碼時,需要輸入pwd。
ZipFile模塊內還有很多實用的功能,限于篇幅所限,就不一一敘述了,大家可查閱Python的官方文檔。
總結
以上是生活随笔為你收集整理的python压缩_Python札记 -- 文件压缩的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第五人格亚服服务器不稳定,【关于第五人格
- 下一篇: win7 64bit显示器波纹问题