zipfile 模組
是乙個底層模組,是python標準庫的一部分。 zipfile 具有可以輕鬆開啟和提取zip檔案的函式。 要讀取zip檔案的內容,首先要做的是建立乙個 zipfile 物件。zipfile 物件類似於使用 open() 建立的檔案物件。zipfile 也是乙個上下文管理器,因此支援with語句:
import zipfile
with zipfile.zipfile(
'data.zip'
,'r'
)as zipobj:
pass
這裡建立乙個zipfile 物件
,傳入zip檔案的名稱並以讀取模式下開啟。 開啟zip檔案後,可以通過zipfile 模組
提供的函式訪問有關存檔檔案的資訊。 上面示例中的 data.zip 存檔是從名為 data 的目錄建立的,該目錄包含總共5個檔案和1個子目錄:
要獲取存檔檔案中的檔案列表,請在 zipfile 物件上呼叫namelist()
:
import zipfile
with zipfile.zipfile(
'data.zip'
,'r'
)as zipobj:
zipobj.namelist(
)
這會生成乙個檔案列表:
[『file1.py』, 『file2.py』, 『file3.py』, 『sub_dir/』, 『sub_dir/bar.py』, 『sub_dir/foo.py』]
.namelist()
返回存檔檔案中檔案和目錄的名稱列表。要檢索有關存檔檔案中檔案的資訊,使用.getinfo()
:
import zipfile
with zipfile.zipfile(
'data.zip'
,'r'
)as zipobj:
bar_info = zipobj.getinfo(
'sub_dir/bar.py'
)print
(bar_info.file_size)
zipfile 模組允許你通過.extract()
和.extractall()
從zip檔案中提取乙個或多個檔案。
預設情況下,這些方法將檔案提取到當前目錄。 它們都採用可選的路徑引數,允許指定要將檔案提取到的其他指定目錄。 如果該目錄不存在,則會自動建立該目錄。 要從壓縮檔案中提取檔案,請執行以下操作:
>>
>
import zipfile
>>
>
import os
>>
> os.listdir(
'.')
['data.zip'
]>>
> data_zip = zipfile.zipfile(
'data.zip'
,'r'
)>>
>
# 提取單個檔案到當前目錄
>>
> data_zip.extract(
'file1.py'
)'/home/test/dir1/zip_extract/file1.py'
>>
> os.listdir(
'.')
['file1.py'
,'data.zip'
]>>
>
# 提所有檔案到指定目錄
>>
> data_zip.extractall(path=
'extract_dir/'
)>>
> os.listdir(
'.')
['file1.py'
,'extract_dir'
,'data.zip'
]>>
> os.listdir(
'extract_dir')[
'file1.py'
,'file3.py'
,'file2.py'
,'sub_dir'
]>>
> data_zip.close(
)
第三行**是對 os.listdir() 的呼叫,它顯示當前目錄只有乙個檔案 data.zip 。
接下來,以讀取模式下開啟 data.zip 並呼叫 .extract() 從中提取 file1.py 。 .extract() 返回提取檔案的完整檔案路徑。 由於沒有指定路徑,.extract() 會將 file1.py 提取到當前目錄。
下一行列印乙個目錄列表,顯示當前目錄現在包括除原始存檔檔案之外的存檔檔案。 之後顯示了如何將整個存檔提取到指定目錄中。.extractall() 建立 extract_dir 並將 data.zip 的內容提取到其中。 最後一行關閉zip存檔檔案。
zipfile 支援提取受密碼保護的zip。 要提取受密碼保護的zip檔案,請將密碼作為引數傳遞給 .extract() 或.extractall() 方法:
>>
>
import zipfile
>>
>
with zipfile.zipfile(
'secret.zip'
,'r'
)as pwd_zip:..
.# 從加密的文件提取資料..
. pwd_zip.extractall(path=
'extract_dir'
, pwd=
'quish3@o'
)
將以讀取模式開啟 secret.zip 存檔。 密碼提供給 .extractall() ,並且壓縮檔案內容被提取到 extract_dir 。 由於with語句,在完成提取後,存檔檔案會自動關閉。 讀取zip檔案
public class ziptest public static void main string args throws filenotfoundexception,ioexception zipinputstream zis new zipinputstream new fileinputs...
zip檔案目錄解壓
解壓zip檔案與刪除檔案目錄 解壓zip檔案 param fis zip檔案流 param unzipdirectory 解壓後存放目錄的路徑 return 是否解壓成功 see 類 類 方法 類 成員 public static boolean unzip inputstream fis,stri...
Qt QuaZip 解壓zip檔案
運用相對還是比較簡單的示例如下,比較簡單,即在當前目錄解壓zip檔案,一般都能看懂 quazip archive zip if archive.open quazip mdunzip qdir dir giftdir for bool f archive.gotofirstfile f f arch...