使用Python解压文件夹下的zip并且删除zip

引言

在开发过程中,我们经常会遇到需要解压缩zip文件的情况,特别是在处理大量数据或者进行数据预处理时。对于初学者来说,可能不太清楚如何使用Python来完成这个任务。本文将介绍如何使用Python解压文件夹下的zip文件并且删除原文件。

总体流程

首先,我们需要了解整个操作的流程。下面是一个简单的流程图,展示了解压缩文件的步骤:

stateDiagram
    [*] --> 检查文件夹是否存在
    检查文件夹是否存在 --> [*]
    [*] --> 遍历文件夹中的zip文件
    遍历文件夹中的zip文件 --> 解压缩zip文件
    解压缩zip文件 --> 删除zip文件
    删除zip文件 --> [*]

步骤详解

检查文件夹是否存在

在开始之前,我们需要确保文件夹存在。如果文件夹不存在,我们需要创建一个新的文件夹来存放解压缩后的文件。

import os

folder_path = 'path/to/folder'  # 替换为你的文件夹路径

if not os.path.exists(folder_path):
    os.makedirs(folder_path)

遍历文件夹中的zip文件

接下来,我们需要遍历文件夹中的所有zip文件。我们可以使用os模块中的listdir方法来获取文件夹中的所有文件,并使用.endswith('.zip')来筛选出zip文件。

import os

folder_path = 'path/to/folder'  # 替换为你的文件夹路径

zip_files = [f for f in os.listdir(folder_path) if f.endswith('.zip')]

解压缩zip文件

一旦我们获取了zip文件的列表,我们可以使用Python的zipfile模块来解压缩文件。

import os
import zipfile

folder_path = 'path/to/folder'  # 替换为你的文件夹路径

zip_files = [f for f in os.listdir(folder_path) if f.endswith('.zip')]

for zip_file in zip_files:
    file_path = os.path.join(folder_path, zip_file)
    with zipfile.ZipFile(file_path, 'r') as zip_ref:
        zip_ref.extractall(folder_path)

删除zip文件

最后,我们需要删除原始的zip文件,以免占用存储空间。

import os
import zipfile

folder_path = 'path/to/folder'  # 替换为你的文件夹路径

zip_files = [f for f in os.listdir(folder_path) if f.endswith('.zip')]

for zip_file in zip_files:
    file_path = os.path.join(folder_path, zip_file)
    with zipfile.ZipFile(file_path, 'r') as zip_ref:
        zip_ref.extractall(folder_path)
    os.remove(file_path)

完整代码

import os
import zipfile

def unzip_and_delete(folder_path):
    if not os.path.exists(folder_path):
        os.makedirs(folder_path)

    zip_files = [f for f in os.listdir(folder_path) if f.endswith('.zip')]

    for zip_file in zip_files:
        file_path = os.path.join(folder_path, zip_file)
        with zipfile.ZipFile(file_path, 'r') as zip_ref:
            zip_ref.extractall(folder_path)
        os.remove(file_path)

# 调用函数
folder_path = 'path/to/folder'  # 替换为你的文件夹路径
unzip_and_delete(folder_path)

状态图

stateDiagram
    [*] --> 文件夹存在?
    文件夹存在? --> [*]
    [*] --> 遍历zip文件
    遍历zip文件 --> 解压缩文件
    解压缩文件 --> 删除zip文件
    删除zip文件 --> [*]

甘特图

gantt
    dateFormat  YYYY-MM-DD
    title 解压缩文件流程

    section 检查文件夹
    检查文件夹是否存在:done, 2022-01-01, 1d

    section 解压缩文件
    遍历zip文件:done, 2022-01-02, 2d
    解压缩文件:done, 2022-01-03, 2d

    section 删除zip文件