ZIP 等压缩文件

产品经理经常需要处理压缩文件。而 ZIP 是最常见的压缩文件格式。Python 不仅能帮我们创建、解压这些压缩文件,而且它能帮我们自动化处理各种压缩相关的重复任务,从而能大大节约我们的时间,提高效率,并提升安全性。

Python 提供了内置的 zipfile 库,能够高效地处理 ZIP 文件,包括压缩、解压和读取文件内容,以及设置压缩级别(控制压缩比,平衡文件大小和压缩时间)。

现在我们来看几个示例:

案例 1:创建 ZIP 文件

场景描述
将多个文件压缩为一个 ZIP 文件。

示例代码如下:

import zipfile

# 创建 ZIP 文件
with zipfile.ZipFile("example.zip", "w") as zipf:
    zipf.write("file1.txt")  # 添加文件到 ZIP
    zipf.write("file2.txt")
    print("ZIP 文件已创建:example.zip")

案例 2:解压 ZIP 文件

场景描述
解压缩文件到指定目录。

示例代码如下:

import zipfile

# 解压 ZIP 文件
with zipfile.ZipFile("example.zip", "r") as zipf:
    zipf.extractall("output_dir")  # 解压到目录
    print("ZIP 文件已解压到 output_dir")

案例 3:读取 ZIP 文件的内容

场景描述
查看 ZIP 文件中的所有文件。

示例代码如下:

import zipfile

# 查看 ZIP 文件内容
with zipfile.ZipFile("example.zip", "r") as zipf:
    file_list = zipf.namelist()  # 获取文件列表
    print("ZIP 文件包含以下内容:")
    for file in file_list:
        print(file)

案例 4:使用第三方库

除了 zipfile,使用 shutilpatoolrarfile 等第三方库也可以处理压缩文件,它们支持更多压缩格式如 TAR、GZ 等。

示例:用 shutil 压缩整个文件夹。

示例代码如下(使用 shutil ):

import shutil

# 压缩文件夹为 ZIP 文件
shutil.make_archive("compressed_folder", "zip", "folder_to_compress")
print("文件夹已压缩为 compressed_folder.zip")

综合案例:自动化处理团队上传的用户反馈数据

产品经理从团队接收到一个 ZIP 文件,里面包含多个 CSV 文件。现在我们需要用 Python 来自动解压文件,读取所有 CSV 文件内容,并将数据合并为一个新的 CSV 文件供分析使用。

示例代码如下:

import zipfile
import pandas as pd
import os

# 解压 ZIP 文件
zip_path = "feedback_data.zip"
output_dir = "extracted_data"

with zipfile.ZipFile(zip_path, "r") as zipf:
    zipf.extractall(output_dir)  # 解压到指定目录
    print(f"ZIP 文件已解压到 {output_dir}")

# 初始化一个空的 DataFrame
merged_data = pd.DataFrame()

# 遍历解压后的文件夹
for root, dirs, files in os.walk(output_dir):
    for file in files:
        if file.endswith(".csv"):  # 只处理 CSV 文件
            file_path = os.path.join(root, file)
            data = pd.read_csv(file_path)
            merged_data = pd.concat([merged_data, data])  # 合并数据

# 保存合并后的数据
merged_data.to_csv("merged_feedback.csv", index=False)
print("所有 CSV 文件已合并为 merged_feedback.csv")

练习:

现在请您在综合示例的基础上,修改代码,让其实现:

  1. 压缩合并后的 CSV 文件:将 merged_feedback.csv 再次压缩为 ZIP 文件以便分享。
  2. 加密压缩文件:研究如何创建带密码保护的 ZIP 文件。
  3. 批量处理:修改代码,使其能够处理多个 ZIP 文件并自动合并数据。

AI 助教

提示:您可在此提出学习中遇到的问题。回答由 AI 生成,可能存在错误,请注意甄别。