在压缩文件时打印进度,通常可以通过计算文件的大小和已经处理的文件数来实现。为了实现一个简单的进度条,我们可以使用 tqdm
库来帮助我们显示进度。
安装 tqdm
首先,你需要安装 tqdm
库。如果还没有安装,可以通过以下命令来安装:
bash
pip install tqdm
示例代码:打印压缩进度
下面的代码展示了如何使用 tqdm
来显示文件压缩进度:
python
import zipfile
import os
from tqdm import tqdmdef zip_folder_with_progress(folder_path, zip_file_path):# 获取文件夹内所有文件的路径all_files = []for root, dirs, files in os.walk(folder_path):for file in files:all_files.append(os.path.join(root, file))# 创建 zip 文件并添加文件with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zip_ref:# 使用 tqdm 显示进度条for file_path in tqdm(all_files, desc="压缩中", unit="file"):# 添加文件到压缩包zip_ref.write(file_path, arcname=os.path.relpath(file_path, folder_path))print(f"文件夹已压缩为 {zip_file_path}")# 压缩文件夹并显示进度
folder_to_zip = 'my_folder' # 替换成你要压缩的文件夹路径
zip_file_path = 'compressed_folder_with_progress.zip' # 压缩后的目标文件路径
zip_folder_with_progress(folder_to_zip, zip_file_path)
python
代码说明:
- 获取文件列表:首先,我们用
os.walk()
遍历文件夹,获取所有文件的路径。 tqdm
进度条:使用tqdm
来包裹all_files
列表,它会自动计算并显示压缩的进度。desc="压缩中"
显示进度条前的描述信息,unit="file"
表示进度单位是每个文件。arcname
:我们使用arcname
来确保压缩包内的文件结构与原始文件夹一致。
示例输出:
当你运行代码时,命令行会显示类似下面的进度条:
压缩中: 100%|██████████| 10/10 [00:00<00:00, 1234.56file/s]
文件夹已压缩为 compressed_folder_with_progress.zip
提示:
tqdm
会自动计算压缩进度,显示速度和已处理的文件数。- 如果你有很多小文件,进度条会比较顺利;如果文件非常大,进度更新可能会稍慢。
如果有任何问题或需要其他功能,随时告诉我!