首页 > 编程语言 >Python解压当天创建的ZIP文件到指定的文件夹中

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

时间:2024-03-22 20:55:22浏览次数:26  
标签:解压 文件 ZIP zip Python 文件夹 file folder

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)

 

标签:解压,文件,ZIP,zip,Python,文件夹,file,folder
From: https://www.cnblogs.com/lcl-cn/p/18090407

相关文章

  • 【知识图谱】基于Python Neo4J :忆
    学习新技术,准备做一个用知识图谱和大数据做的的助农项目1.准备工作        首先就是软件的使用,那么选择了使用人数最多,模板使用最多的Neo4J,使用此软件得先安装Java的运行库,这里就不多介绍,网上有许多从零开始的安装教程。        在安装完运行库后,以管理员身......
  • 搞AI不必非得转学python了,SpringAi(spring版的langchain)来了
    搞AI不必非得转学python了,spring版的langchain来了!!!作为一个java程序员研究大模型真的是天然的心理门槛。换个语言(python)就感觉换了个媳妇一样,总是迈不出那一步。最近为了项目,下定决心、刚费了九牛二虎之力搭建了一套本地问答大模型应用,见我前一篇文章:MacbookairM216G......
  • 蓝桥杯 python
    目录一、遍历列表1.使用for循环和enumerate()函数实现2.案例代码二、对列表进行统计和计算1.统计数值列表的元素和2.案例代码三、对列表进行排序1.使用列表对象的sort()方法2.使用内置的sorted()函数实现四、列表推导式1.从列表中选择符合条件的元素组成新的列表......
  • 【Python模块】
    Python模块是一个包含Python定义和语句的文件。模块可以定义函数、类和变量。模块也可以包含可执行的代码。一个模块就是一个包含Python代码的文件,文件后缀是.py。模块可以被其他程序引入(import),以使用该模块中的函数等功能。这也是使用Python标准库的方法。一、Python模......
  • python
    安装配置安装相关python1.windows版本的下载路径https://www.python.org/downloads/windows/pycharm1.安装后pycharm的路径C:\ProgramFiles\JetBrains\PyCharm2022.3.1\bin2.pycharm的破解方法https://www.exception.site/article/17023.破解文件在chrometom......
  • Python中的数据集包含哪些?
    1.set()集合格式:{元素1,元素2,元素3},元素之间用逗号分隔,每个元素的类型可以不一样,比如{1,2,3},{'a','b','c'},{'a',1,'b',2}set集合是无序的,里面的元素不可重复 2.list集合(列表)格式:[元素1,元素2,元素3],元素可以是任何类型,比如字符串,数字,字典对象等list集合是有序的,里面的元......
  • python异步编程
    1、协程1.1协程是什么协程不是计算机提供,程序员人为创造。协程(Coroutine)也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。线程是通过时间片抢占来执行程序的,相比与线程的抢占式调度协程de协作式调度是程序自身......
  • 为什么说金融/财务人需要学Python??
    Python是财务人和金融人的多功能工具箱!它有非常多的细分应用,接下来我将给你详细介绍为什么财务、金融方向需要学Python以及有哪些方向的细分应用!一、为什么金融/财务人需要Python?想在行业中崭露头角?那你可不能忽视Python这个神器!首先,它是个数据处理高手,无论是股票......
  • Python中常用模块有哪些?
    1.importosos模块提供很多方法用来处理文件和目录 2.importsyssys模块提供了一系列运行环境的变量和函数,例如argv变量,argv变量是一个包含命令行参数的列表 3.fromminioimportMiniominio是一个对象存储服务,可以用来存储大量的数据,比如图片,视频,文档等 4.frommysq......
  • python运算符
    运算符:算数运算符:赋值运算符:比较运算符: 逻辑运算符:  ......