4.21 Python实现将文件夹中的文件压缩

Python实现将文件夹中的文件压缩

可以使用 Python 的 shutil 和 os 模块来将文件夹 C:\Users\15640\Desktop\git\abc 中的所有文件打包成一个名为 abc.zip 的压缩包。


python 复制代码
import shutil
import os

# 定义文件夹路径和压缩包名称
folder_path = r'C:\Users\15640\Desktop\git\abc'
zip_name = os.path.basename(folder_path)  # 使用文件夹名作为压缩包名
zip_path = os.path.join(os.path.dirname(folder_path), zip_name)  # 压缩包的完整路径,不含扩展名

# 创建压缩包
shutil.make_archive(zip_path, 'zip', folder_path)

print(f'{zip_name}.zip 已经创建在 {os.path.dirname(folder_path)}')



这个脚本做了以下几件事:

  1. 导入 shutil 和 os 模块。
  2. 定义文件夹路径 folder_path 和压缩包名称 zip_name。
  3. 使用 os.path.basename 从文件夹路径中提取文件夹名,并将其用作压缩包名。
  4. 使用 shutil.make_archive 创建一个以 zip_path 命名的压缩包,'zip' 参数指定压缩包格式为 zip,folder_path 参数指定要压缩的文件夹。
  5. 打印一条消息,告知用户压缩包已创建及其所在位置。

运行这个脚本后,您将在 C:\Users\15640\Desktop\git 文件夹中找到一个名为 abc.zip 的压缩包,其中包含 abc 文件夹中的所有文件。




除了使用 shutil 模块,还可以使用 zipfile 模块来实现将文件夹压缩成 ZIP 文件。

python 复制代码
import zipfile
import os


def zip_folder(folder_path, output_path):
    with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                file_path = os.path.join(root, file)
                arcname = os.path.relpath(file_path, start=folder_path)
                zipf.write(file_path, arcname)


# 定义文件夹路径和压缩包名称
folder_path = r'C:\Users\15640\Desktop\git\abc'
zip_name = os.path.basename(folder_path) + '.zip'  # 使用文件夹名作为压缩包名
zip_path = os.path.join(os.path.dirname(folder_path), zip_name)  # 压缩包的完整路径

# 调用函数创建压缩包
zip_folder(folder_path, zip_path)

print(f'{zip_name} 已经创建在 {os.path.dirname(folder_path)}')


这个脚本实现以下功能:

  1. 导入 zipfile 和 os 模块。
  2. 定义 zip_folder 函数,该函数接受要压缩的文件夹路径和输出的压缩包路径。
  3. 使用 os.walk 遍历文件夹,获取所有文件的路径。
  4. 将每个文件添加到 ZIP 文件中,使用 os.path.relpath 确保在 ZIP 文件中保留文件的相对路径。
  5. 定义文件夹路径 folder_path 和压缩包名称 zip_name。
  6. 调用 zip_folder 函数创建压缩包。
  7. 打印一条消息,告知用户压缩包已创建及其所在位置。

运行这个脚本后,您将在 C:\Users\15640\Desktop\git 文件夹中找到一个名为 abc.zip 的压缩包,其中包含 abc 文件夹中的所有文件。




相关推荐
離離原上譜2 小时前
python-docx 安装与快速入门
python·word·python-docx·自动化办公·1024程序员节
JuicyActiveGilbert2 小时前
【Python进阶】第2篇:单元测试
开发语言·windows·python·单元测试
今天没ID2 小时前
Numpy加权平均数
python
唐叔在学习2 小时前
200kb能作甚?mss表示我给你整个截图程序
后端·python
智能化咨询2 小时前
Python 小工具实战:图片水印批量添加工具——从原理到实现的全流程指南
python
用户3721574261352 小时前
如何使用 Python 自动调整 Excel 行高和列宽
python
用户8356290780512 小时前
用Python自动化转换PowerPoint幻灯片为图片
后端·python
程序员爱钓鱼2 小时前
Python编程实战 · 基础入门篇 | 推导式(列表推导式 / 字典推导式)
后端·python
小小测试开发3 小时前
Bokeh 库入门:用 Python 绘制交互式数据可视化图表
开发语言·python·信息可视化·bokeh