ZIP檔案讀取,解壓

2021-09-27 06:30:53 字數 3016 閱讀 9536

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...