要在 Python 中解壓文件并顯示進度,我們需要在解壓過程中跟蹤文件的提取進度。由于 zipfile
模塊本身不直接支持進度顯示,我們可以通過手動計算并使用 tqdm
庫來顯示進度條。
安裝 tqdm
首先,確保你已經安裝了 tqdm
庫,用于顯示進度條:
bash
pip install tqdm
示例代碼:解壓 .zip
文件并顯示進度
python
import zipfile
import os
from tqdm import tqdmdef unzip_with_progress(zip_file_path, extract_to_folder):# 打開 zip 文件with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:# 獲取壓縮包中的所有文件列表all_files = zip_ref.namelist()# 如果目標文件夾不存在,創建它os.makedirs(extract_to_folder, exist_ok=True)# 使用 tqdm 顯示進度條,循環解壓文件with tqdm(total=len(all_files), desc="解壓中", unit="file") as pbar:for file in all_files:# 解壓每個文件到目標文件夾zip_ref.extract(file, path=extract_to_folder)# 更新進度條pbar.update(1)print(f"文件已解壓到 {extract_to_folder}")# 解壓文件并顯示進度
zip_file_path = 'your_file.zip' # 替換成你的 zip 文件路徑
extract_to_folder = 'extracted_folder' # 替換成解壓目標文件夾
unzip_with_progress(zip_file_path, extract_to_folder)
python
代碼說明:
- 獲取文件列表:使用?
zip_ref.namelist()
?獲取?.zip
?文件中所有文件的名稱。這樣可以通過?tqdm
?顯示每個文件的解壓進度。 tqdm
?進度條:tqdm
?用于顯示進度條,它會根據文件的數量(len(all_files)
)來顯示進度。desc="解壓中"
?是進度條前的描述信息,unit="file"
?表示單位是文件。- 文件解壓:通過?
zip_ref.extract()
?來解壓每個文件到指定的目標文件夾。 - 進度更新:每解壓一個文件,調用?
pbar.update(1)
?來更新進度條。
示例輸出:
當你運行這個腳本時,命令行會顯示類似下面的進度條:
解壓中: 100%|██████████| 10/10 [00:01<00:00, 9.45file/s]
文件已解壓到 extracted_folder
提示:
- 這個方法對于壓縮包中的文件較多時非常有效。
- 如果文件非常大,進度條更新的速度可能會受到磁盤 I/O 或 CPU 限制的影響。
如果你有更多的要求,或者需要進一步的幫助,隨時告訴我!