現在對文件信息壓縮和解壓縮較為常見的文件格式便是zrar格式和7z文件格式,本文關鍵講了Python壓縮包解決控制模塊zipfile和py7zr,必須的小伙伴可以借鑒一下
現在對文件信息壓縮和解壓縮較為常見的文件格式便是zrar格式和7z文件格式,現在就以篇文章來融匯貫通會該2個壓縮文件格式操作。
一:zipfile的常見實際操作
1,壓縮包
zipfile.ZipFile(file[,mode[,compression[,allowZip64]]])
主要參數file表示文檔的路線;主要參數mode標示開啟zip文件的方式,主要有三種mode
緩解壓力:r
縮小:w
增加縮小:a
初始值為'r',表明讀早已存有的zip文件,還可以為'w'或'a','w'表明新創建一個zip文檔或涵蓋1個早已存有的zip文檔,‘a’表明增加縮小
下面我們就構建一個壓縮包result.zip,并縮小test文件夾中的所有文件夾
import zipfile import os testdir="D:FTZpython_toolresulttest" filename="./result.zip" z=zipfile.ZipFile(filename,'w') for d in os.listdir(testdir): z.write(d) z.close 當然上面還可以用with的方法打開 import zipfile import os testdir="D:DPIpython_toolresulttest" filename="./result.zip" with zipfile.ZipFile(filename,'w')as z: for d in os.listdir(testdir): z.write(d) z.close
2,解壓縮文件
import zipfile import os testdir="D:FTZpython_toolresulttest" filename="./result.zip" with zipfile.ZipFile(filename,'r')as z: z.extractall(testdir)
需要注意的是有些壓縮包解壓是有密碼,這時候調用extractall的時候也支持輸入密碼,在python3中,解壓文件的密碼參數pwd接收的是二進制的值,所以要在前面加一個b
z.extractall(testdir,pwd=b"ftz")
3,列出壓縮包里的所有文件
import zipfile import os testdir="D:DPIpython_toolresulttest" filename="./result.zip" with zipfile.ZipFile(filename,'r')as z: files=z.namelist() print(files)
運行結果如下,返回的是一個列表:
4,其他常用的方法
import zipfile import os testdir="D:ftzpython_toolresulttest" filename="./result.zip" with zipfile.ZipFile(filename,'r')as z: z.setpassword(b'ftz1')#設置zip文檔的密碼。 z.printdir()#將zip文檔內的信息打印到控制臺上。 data=z.read('file.yaml')#獲取zip文檔內指定文件的二進制數據 print(data) info=z.getinfo('file.yaml')#方法返回的是一個ZipInfo對象,表示zip文檔中相應文件的信息。它支持如下屬性 print("獲取文件名稱:",info.filename) print("獲取文件最后修改時間:",info.date_time) print("獲取壓縮類型:",info.compress_type) print("獲取壓縮后的大小:",info.compress_size) print("獲取未壓縮的文件大小:",info.file_size) print("判斷是否是壓縮文件:",zipfile.is_zipfile(filename))
運行結果如下:
File Name Modified Size
data_yaml.yaml 2022-06-25 10:50:42 198
file.yaml 2022-06-25 10:13:46 123
vnfname.txt 2022-01-14 11:27:56 9320
b'xe4xb8x80xe7xbaxa7xe6xa0x87xe9xa2x98:nxe4xbax8cxe7xbaxa7xe6xa0x87xe9xa2x981:n b:1n c:2n a:3nxe4xbax8cxe7xbaxa7xe6xa0x87xe9xa2x982:n f:7n t:8n z:9'
獲取文件名稱:file.yaml
獲取文件最后修改時間:(2022,6,25,10,13,46)
獲取壓縮類型:0
獲取壓縮后的大小:123
獲取未壓縮的文件大小:123
判斷是否是壓縮文件:True
[Finished in 0.2s]
當然getinfo也支持其他的屬性,下面給出比較全的屬性和方法
ZipInfo.filename:獲取文件名稱。
ZipInfo.date_time:獲取文件最后修改時間。返回一個包含6個元素的元組:(年,月,日,時,分,秒)
ZipInfo.compress_type:壓縮類型。
ZipInfo.comment:文檔說明。
ZipInfo.extr:擴展項數據。
ZipInfo.create_system:獲取創建該zip文檔的系統。
ZipInfo.create_version:獲取創建zip文檔的PKZIP版本。
ZipInfo.extract_version:獲取解壓zip文檔所需的PKZIP版本。
ZipInfo.reserved:預留字段,當前實現總是返回0。
ZipInfo.flag_bits:zip標志位。
ZipInfo.volume:文件頭的卷標。
ZipInfo.internal_attr:內部屬性。
ZipInfo.external_attr:外部屬性。
ZipInfo.header_offset:文件頭偏移位。
ZipInfo.CRC:未壓縮文件的CRC-32。
ZipInfo.compress_size:獲取壓縮后的大小。
ZipInfo.file_size:獲取未壓縮的文件大小。
二:py7zr的常用操作
1,壓縮文件
import py7zr with py7zr.SevenZipFile('target.7z','w')as archive: archive.writeall('/path/to/base_dir','base') 如果想設置密碼壓縮 import py7zr with py7zr.SevenZipFile('target.7z','w',password='secret')as archive: archive.writeall('/path/to/base_dir','base')
2,解壓縮文件
import py7zr archive=py7zr.SevenZipFile('sample.7z',mode='r') archive.extractall(path="/tmp") archive.close()
也支持with模式
import py7zr with py7zr.SevenZipFile('sample.7z',mode='r')as z: z.extractall() with py7zr.SevenZipFile('target.7z','w')as z: z.writeall('./base_dir')
py7z也支持提取某個文件或者符合正則匹配的文件
import py7zr import re filter_pattern=re.compile(r'<your/target/file_and_directories/regex/expression>') with SevenZipFile('archive.7z','r')as archive: allfiles=archive.getnames() selective_files=[f for f in allfiles if filter_pattern.match(f)] archive.extract(targets=selective_files)
支持解壓縮加密的7z文件
import py7zr with py7zr.SevenZipFile('encrypted.7z',mode='r',password='secret')as z: z.extractall()
綜上所述,這篇文章就給大家介紹到這里了,希望可以給各位讀者帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129071.html
摘要:同時無論在哪種平臺上,都可以用進行系統編程。這樣導入模塊并使用生成隨機數中的模塊提供了生成隨機數的函數。生成的隨機數介于和之間。可以從自己定義的范圍中生成一個隨機數,如下所示操作日期和時間你可以從日期中提取所需的值,如下所示。 翻譯:瘋狂的技術宅https://likegeeks.com/python-... 本文首發微信公眾號:前端先鋒歡迎關注,每天都給你推送新鮮的前端技術文章 ...
摘要:通過內置的模塊實現對文件的解壓,加點料完成口令破解模塊基本使用使用壓縮文件創建一個文件對象,壓縮是需要把改為將文件寫入文件中,即將文件壓縮將文件對象關閉使用解壓文件解壓準備階段首先你需要一個壓縮文件,并且給它加上密碼,樣子長成這樣然后你就成 通過Python內置的zipfile模塊實現對zip文件的解壓,加點料完成口令破解 zipfile模塊基本使用 使用zipfile壓縮文件 imp...
摘要:模塊里有兩個非常重要的分別是和。返回一個對象,它包括文件的詳細信息。將文檔內的指定文件解壓到當前目錄。為文件路徑,為添加到文檔之后保存的名稱參數表示壓縮方法,它的值可以是或。預留字段,當前實現總是返回。 ZipFile模塊里有兩個非常重要的class, 分別是 ZipFile和ZipInfo。ZipFile是主要的類,用來創建和讀取zip文件,而ZipInfo是存儲的zip文件的每個文...
摘要:最近這段時間遇到了一個問題,直接打開壓縮包文件后,用讀后,用進行遍歷時,會提示。出問題的代碼是這樣的的英文縮寫是分析原因后,主要是因為讀進來的內容是類型,讀進去的類型也是,造成無法遍歷。 最近這段時間遇到了一個問題,直接打開壓縮包文件后,用csv.reader讀后,用for in 進行遍歷時,會提示:iterator should return strings not bytes (...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02