要在 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 限制的影响。
如果你有更多的要求,或者需要进一步的帮助,随时告诉我!