Python实现将文件夹中的文件压缩
可以使用 Python 的 shutil 和 os 模块来将文件夹 C:\Users\15640\Desktop\git\abc 中的所有文件打包成一个名为 abc.zip 的压缩包。
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)}')
这个脚本做了以下几件事:
- 导入 shutil 和 os 模块。
- 定义文件夹路径 folder_path 和压缩包名称 zip_name。
- 使用 os.path.basename 从文件夹路径中提取文件夹名,并将其用作压缩包名。
- 使用 shutil.make_archive 创建一个以 zip_path 命名的压缩包,‘zip’ 参数指定压缩包格式为 zip,folder_path 参数指定要压缩的文件夹。
- 打印一条消息,告知用户压缩包已创建及其所在位置。
运行这个脚本后,您将在 C:\Users\15640\Desktop\git 文件夹中找到一个名为 abc.zip 的压缩包,其中包含 abc 文件夹中的所有文件。
除了使用 shutil 模块,还可以使用 zipfile 模块来实现将文件夹压缩成 ZIP 文件。
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)}')
这个脚本实现以下功能:
- 导入 zipfile 和 os 模块。
- 定义 zip_folder 函数,该函数接受要压缩的文件夹路径和输出的压缩包路径。
- 使用 os.walk 遍历文件夹,获取所有文件的路径。
- 将每个文件添加到 ZIP 文件中,使用 os.path.relpath 确保在 ZIP 文件中保留文件的相对路径。
- 定义文件夹路径 folder_path 和压缩包名称 zip_name。
- 调用 zip_folder 函数创建压缩包。
- 打印一条消息,告知用户压缩包已创建及其所在位置。
运行这个脚本后,您将在 C:\Users\15640\Desktop\git 文件夹中找到一个名为 abc.zip 的压缩包,其中包含 abc 文件夹中的所有文件。