一个按日期整理文件夹的工具 python

写了一个工具,可以用来整理文件夹

# 整理文件夹的工具	作者:C4n
# 1.遍历文件夹和子文件夹(有无递归)
# 2.按日、月、年进行整理(传入枚举型变量)
# 3.起始时间到结束时间
# 4.指定保存路径

import re
import shutil
from datetime import datetime
import os
import time
from enum import Enum


# 枚举类型
class Accuracy(Enum):
    year = 0
    mouth = 1
    day = 2
    hour = 3
    minute = 4


class IsRecursive(Enum):
    no = 0
    yes = 1


def in_timerange(file_path, start_time, end_time):
    # 切割日期
    start_time, end_time = re.split('-', start_time), re.split('-', end_time)
    # 转换类型
    start_time, end_time = list(map(int, start_time)), list(map(int, end_time))
    # 列表拆解传参(拆包)
    start_time, end_time = datetime(*start_time), datetime(*end_time)
    # 转换类型  这里使用了按访问时间来进行分类,getctime就是创建时间,getmtime就是修改时间
    file_time = time.localtime(os.path.getmtime(file_path))
    file_time = datetime.fromtimestamp(time.mktime(file_time))
    # 作比较
    if start_time < file_time < end_time:
        return file_time
    else:
        return 0


def sort_dir(dir_path, start_time, end_time, accuracy, isrecursive=IsRecursive.no, save_path=None):
    """

    @param isrecursive: 是否进行递归
    @param save_path:存储路径,一般会和递归搭配使用
    @param dir_path: 目录路径
    @param start_time: 起始时间
    @param end_time: 结束时间
    @param accuracy: 精度,也就是分类精确到年月日
    @return:
    """
    # 如果文件夹路径不是以'\'结尾,则补上
    if dir_path[-1] != '\\':
        dir_path += '\\'
    # 如果存储路径没有指定,就默认为同级目录,选用递归时一般会指定存储路径
    if save_path is None:
        save_path = dir_path
    if save_path[-1] != '\\':
        save_path += '\\'
    # dir_list:目录路径
    dir_list = os.listdir(dir_path)
    # 遍历目录
    for file in dir_list:
        # file_path:文件路径
        file_path = dir_path + file.title()
        # 如果选择递归且为文件夹,则进行递归操作
        if isrecursive:
            if os.path.isdir(file_path):
                sort_dir(file_path, start_time, end_time, accuracy, isrecursive=IsRecursive.no, save_path=save_path)
        # tmp:在日期区间内则为创建时间,否则则为0
        tmp = in_timerange(file_path, start_time, end_time)
        # 如果tmp在日期区间内,则要移动它到指定文件夹
        if tmp:
            # 分割日期字符串,便于操作
            tmp = re.split('-| |,|:', str(tmp))
            # s:要创建的文件夹名字 年-月-日
            s = ''
            # j:为了下面创建的文件夹不要多出一个'-'
            j = 0
            for i in tmp[0:accuracy.value + 1]:
                s += i
                if j != accuracy.value:
                    s += '-'
                j += 1
            # make_dir:创建的文件夹路径
            make_dir = save_path + s
            # 文件夹不存在则创建
            if not os.path.exists(make_dir):
                os.mkdir(make_dir)
            # 移动文件到指定文件夹
            shutil.move(file_path, make_dir)


if __name__ == '__main__':
    sort_dir("E:\\2022", "2020-10-10", "2022-12-30", Accuracy.day, IsRecursive.yes,save_path="E:\\2022")

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值