python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python按类型/名称/日期自动整理文件

使用Python按类型/名称/日期自动归类5000个文件的代码实现

作者:张大狸

文章介绍了使用Python自动化文件管理方案,通过按文件类型、日期归档和智能重命名等功能,大幅提高了文件管理的效率和可复用性,测试结果显示,自动化方案相比传统方法和商业软件,耗时更短、内存占用更低,文章还提供了详细的代码实现步骤和效率对比,需要的朋友可以参考下

一、你的文件管理是否也这样崩溃过?

真实场景痛点

传统方法VS自动化方案

方法耗时(5000文件)错误率可复用性
手动整理16小时15%
本Python方案2分钟0%​

二、核心代码实现(分步骤详解)

1. 按文件类型归类

import os
import shutil
from pathlib import Path

#def sort_by_type(source_folder,target_folder):
def sort_by_type(folder):
    """按扩展名分类到不同子文件夹,"""
    """参数中也可以指明来源文件夹和目标文件夹(比如要把文件从C盘的下载文件夹挪到D盘的指定文件夹,都用绝对路径)"""
    for item in Path(folder).glob('*'):
        if item.is_file():
            ext = item.suffix[1:]  # 获取扩展名(不含点)
            target_dir = Path(folder) / f"{ext}_files"
            target_dir.mkdir(exist_ok=True)
            shutil.move(str(item), target_dir) #怕剪切出问题也可以换成copy2

# 使用示例
sort_by_type("C:/Downloads")

效果​:

2. 按日期归档(适合照片/文档备份)

from datetime import datetime

def sort_by_date(folder, date_format="%Y-%m"):
    """按修改日期创建年月目录"""
    for file in Path(folder).glob('*'):
        if file.is_file():
            mtime = datetime.fromtimestamp(file.stat().st_mtime)
            target_dir = Path(folder) / mtime.strftime(date_format)
            target_dir.mkdir(exist_ok=True)
            shutil.move(str(file), target_dir)

# 按年月归档(可改为"%Y-%m-%d"精确到日)
sort_by_date("D:/Project_Docs")

3. 智能重命名混乱文件

import re

def clean_filenames(folder):
    """统一命名格式:类型_日期_序号"""
    for i, file in enumerate(Path(folder).glob('*')):
        if file.is_file():
            ext = file.suffix
            new_name = f"{file.stem[:10]}_{datetime.now().strftime('%Y%m%d')}_{i}{ext}"
            new_path = file.with_name(new_name)
            file.rename(new_path)

# 进阶技巧:用正则表达式提取原文件名中的关键信息
# 例如将"报告2023-1-1终版.docx" → "报告_20230101.docx"

三、效率对比测试

测试环境​:

结果​:

操作耗时内存占用
按类型分类38秒45MB
按年月归档1分12秒50MB
商业整理软件6分钟300MB

四、进阶企业级方案

如需以下功能可私信沟通定制:

  1. 多线程加速​:处理10万文件快至30秒
  2. 重复文件检测​:基于MD5哈希值比对
  3. 敏感文件识别​:自动标记含身份证号/手机号的文件
  4. 定时任务​:每天凌晨3点自动整理指定文件夹
# 企业版核心代码片段(预览)
from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(max_workers=8) as executor:
    executor.map(process_file, all_files)  # 多线程处理

五、常见问题解答

Q1​:Mac/Linux系统能否使用?
→ 代码完全跨平台,只需修改路径格式(如Mac的/Users/name/Downloads

Q2​:误操作如何恢复?
→ 建议先运行测试版(代码中注释掉shutil.move改为print预览结果)

以上就是使用Python按类型/名称/日期自动归类5000个文件的代码实现的详细内容,更多关于Python按类型/名称/日期整理文件的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文