zipfile模塊是python中一個處理壓縮文件的模塊,解決了很多咱們日常須要處理壓縮文件的需求 ,本文主要談談zipfile幾個經常使用的用法。html
首先我在Windows操做系統中建立以下的文件目錄:python
1、讀取壓縮文件:算法
代碼:spa
import zipfile操作系統
import os.net
# 壓縮文件路徑code
zip_file_path = r'F:\壓縮文件zipfile\zipfile_dir.zip'htm
# 壓縮文件目錄路徑blog
zip_dir = r'F:\壓縮文件zipfile\zipfile_dir'ip
# 打開壓縮文件
zip_files = zipfile.ZipFile(zip_file_path,mode='r')
# 獲取zip壓縮文件的相關信息
for content in zip_files.infolist():
print(content)
# 遍歷zip壓縮文件的文件名稱
for name in zip_files.namelist():
print(name)
# 記得要像讀取file那樣關閉文件句柄
zip_files.close()
壓縮文件的名稱、壓縮算法和大小等信息
<ZipInfo filename='zipfile_dir/test1.txt' compress_type=deflate external_attr=0x20 file_size=2918 compress_size=1591> <ZipInfo filename='zipfile_dir/test2.txt' compress_type=deflate external_attr=0x20 file_size=2918 compress_size=1591> <ZipInfo filename='zipfile_dir/' external_attr=0x10>
壓縮文件目錄下全部文件的名稱
zipfile_dir/test1.txt zipfile_dir/test2.txt zipfile_dir/
2、往zip目錄中添加文件
代碼:
# 在指定zip壓縮文件目錄下建立zip文件
create_zip_file = zipfile.ZipFile(zip_file_path, mode='a', compression=zipfile.ZIP_DEFLATED)
new_file_path = os.path.join(zip_dir,r'README.txt')
# 將文件夾中的文件拷貝進zip目錄
file_name = 'README.txt'
create_zip_file.write(new_file_path,file_name)
create_zip_file.close()
注意:加入zip目錄的文件自己在文件夾中已經存在,不然zipfile模塊搜索路徑是沒法找到的。
添加成功:
3、解壓文件:
zipfile提供的壓縮方法有:
ZIP_STORED,ZIP_DEFLATED, ZIP_BZIP2和ZIP_LZMA
ZIP_STOREED:只是做爲一種存儲,實際上並未壓縮
ZIP_DEFLATED:用的是gzip壓縮算法
ZIP_BZIP2:用的是bzip2壓縮算法
ZIP_LZMA:用的是lzma壓縮算法
gzip和bzip2壓縮算法的區別:
使用 gzip要比bzip2快,可是bzip2會得到比 gzip更高的壓縮率,即bzip壓縮後的壓縮文件跟小。
更多關於這幾種算法的區別能夠看這兩篇篇文章:
https://www.cnblogs.com/kuang17/p/7193124.html
https://blog.csdn.net/leilonghao/article/details/73200859
代碼:
# 解壓後文件放置的目錄
unzip_dir = r'F:\tk_demo_test'
# 解壓前文件的zip目錄
zip_file2_path = r'F:\tk_demo.zip'
unzip_files = zipfile.ZipFile(zip_file2_path,mode='r',compression=zipfile.ZIP_DEFLATED)
unzip_files.extractall(unzip_dir)
unzip_files.close()
解壓成功:
參考文章:
https://www.cnblogs.com/kuang17/p/7193124.html
https://blog.csdn.net/leilonghao/article/details/73200859
更多內容,請參考官方文檔:https://docs.python.org/3/library/zipfile.html#zipfile.ZIP_STORED