Python解压当天创建的ZIP文件到指定的文件夹中

1. 首先,导入了需要使用的模块:

**- `zipfile`:用于处理ZIP文件的模块。

  • `os`:提供了与操作系统交互的功能。
  • `shutil`:用于高级文件操作,例如移动文件等。
  • `datetime`:用于处理日期和时间的模块。**

2. 定义了一个函数 `unzip_todays_files(zip_files_folder, extract_folder)`,该函数接受两个参数:

- `zip_files_folder`:包含ZIP文件的文件夹路径。
- `extract_folder`:解压缩目标文件夹的路径。

3. 获取当前日期:

复制代码
today = datetime.datetime.now().date()  

这里使用 `datetime.datetime.now().date()` 获取当前日期。

4. 遍历指定文件夹中的所有ZIP文件:

复制代码
for file_name in os.listdir(zip_files_folder):
    if file_name.endswith('.zip'):
        ...

使用 `os.listdir(zip_files_folder)` 获取指定文件夹中的所有文件名,然后检查文件名是否以 `.zip` 结尾,以过滤出ZIP文件。

5. 检查ZIP文件是否是当天创建的:

复制代码
create_date = datetime.datetime.fromtimestamp(os.path.getctime(zip_file_path)).date()
if create_date == today:
    ...

使用 `os.path.getctime(zip_file_path)` 获取文件的创建时间,然后将其转换为日期。接着,将其与当前日期进行比较,以确定文件是否是当天创建的。

6. 解压缩ZIP文件:

复制代码
with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
    ...

使用 `zipfile.ZipFile` 打开ZIP文件,并指定为只读模式。使用 `with` 上下文管理器确保在退出上下文时关闭文件。

7. 获取解压后的文件列表:

复制代码
extracted_files = zip_ref.namelist()

使用 `zip_ref.namelist()` 获取ZIP文件中的所有文件名列表。

8. 根据文件名中的特定信息判断存储目录:

复制代码
for extracted_file in extracted_files:
    if 'YYFX' in extracted_file:
        target_folder = extract_folder2
    elif '其他特定信息' in extracted_file:
        target_folder = '目标文件夹路径2'
    else:
        target_folder = extract_folder  # 默认存储到解压目标文件夹

根据文件名中的特定信息,判断应该将文件解压到哪个目标文件夹。如果文件名中包含 `'YYFX'`,则将文件解压到 `extract_folder2`;如果文件名中包含其他特定信息,则将文件解压到另一个目标文件夹;否则,默认将文件解压到 `extract_folder`。

9. 确保目标文件夹存在:

复制代码
os.makedirs(target_folder, exist_ok=True)

使用 `os.makedirs(target_folder, exist_ok=True)` 创建目标文件夹,如果目标文件夹不存在的话。

10. 解压文件到目标文件夹:

复制代码
zip_ref.extract(extracted_file, target_folder)

使用 `zip_ref.extract(extracted_file, target_folder)` 将文件解压到目标文件夹中。

11. 打印解压信息:

复制代码
print(f"已解压文件: {extracted_file} 到目标文件夹: {target_folder}")

打印已解压的文件名和目标文件夹路径。

完整代码:

复制代码
import zipfile
import os
import shutil
import datetime


def unzip_todays_files(zip_files_folder, extract_folder):
    # 获取当前日期
    today = datetime.datetime.now().date()

    # 遍历指定文件夹中的所有ZIP文件
    for file_name in os.listdir(zip_files_folder):
        if file_name.endswith('.zip'):
            # 构建ZIP文件的完整路径
            zip_file_path = os.path.join(zip_files_folder, file_name)

            # 获取ZIP文件的创建日期
            create_date = datetime.datetime.fromtimestamp(os.path.getctime(zip_file_path)).date()

            # 检查ZIP文件是否是当天创建的
            if create_date == today:
                print(f"正在解压文件: {zip_file_path}")
                # 打开ZIP文件
                with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
                    # 获取解压后的文件列表
                    extracted_files = zip_ref.namelist()

                    # 根据文件名中的特定信息判断应该存储到哪个文件夹
                    for extracted_file in extracted_files:
                        # 根据文件名中的特定信息判断存储目录
                        if 'YYFX' in extracted_file:
                            target_folder = extract_folder2
                        elif '其他特定信息' in extracted_file:
                            target_folder = '目标文件夹路径2'
                        else:
                            target_folder = extract_folder  # 默认存储到解压目标文件夹

                        # 确保目标文件夹存在
                        os.makedirs(target_folder, exist_ok=True)

                        # 解压文件到目标文件夹
                        zip_ref.extract(extracted_file, target_folder)

                        print(f"已解压文件: {extracted_file} 到目标文件夹: {target_folder}")


# 指定包含ZIP文件的文件夹路径和解压缩目标文件夹路径
zip_files_folder = 'C:\\Users\\Administrator\\Downloads'  # 包含ZIP文件的文件夹
extract_folder = 'F:\\工作内容\\我的数据\\商品费用解析数据'  # 已经存在的目录
extract_folder2 = 'F:\\工作内容\\我的数据\\订单列表数据'

# 调用函数解压缩当天创建的文件
unzip_todays_files(zip_files_folder, extract_folder)
相关推荐
B站_计算机毕业设计之家8 分钟前
豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
vue.js·python·机器学习·flask·echarts·lstm·推荐算法
渣渣苏16 分钟前
Langchain实战快速入门
人工智能·python·langchain
lili-felicity25 分钟前
CANN模型量化详解:从FP32到INT8的精度与性能平衡
人工智能·python
数据知道28 分钟前
PostgreSQL实战:详解如何用Python优雅地从PG中存取处理JSON
python·postgresql·json
ZH154558913141 分钟前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同76541 分钟前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子1 小时前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python
白日做梦Q1 小时前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
喵手1 小时前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手1 小时前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集