Python实现——多层目录遍历—以文件名创建目录-自动存放文件

专栏导读

在这里插入图片描述

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅

  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏求订阅

  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

背景

  • 我们有时候经常会遇见多层目录(文件夹)内含有若干文件如:图片、Excel文件、word文档等进行文件分类,使得通过文件命名的规律,自动创建文件夹,自动将文件放入对应的文件夹

  • 如下图的测试案例

在这里插入图片描述

  • 效果图

在这里插入图片描述

1、库的介绍

  • shutil 是 Python 的一个标准库,主要用于操作文件和目录的高级操作。它建立在 os 和 os.path 模块之上,提供了更方便的文件复制、移动、删除以及目录树的遍历等功能。

  • 具体内容请看:Python100个库分享之——shutil 库介绍

2、库的安装

用途安装
shutil文件操作内置库无需安装

3、核心代码

  • ①:文件的复制 \ 移动

 # 复制文件到目标文件夹
shutil.copy(abs_file_path, target_folder)
# shutil.move(abs_file_path, os.path.join(target_folder, file))

4、完整代码(模板)

import os
import shutil


# 初始化路径
source_path = "测试数据"
destination_path = os.getcwd()

# 创建一个字典来存储文件名前缀到编号的映射
# prefix_to_num = defaultdict(lambda: len(prefix_to_num) + 1000001)

# 遍历源文件夹
for root, dirs, files in os.walk(source_path):
    for file in files:
        if file.lower().endswith(('.jpg', '.png')):
            # 获取文件的绝对路径
            abs_file_path = os.path.join(root, file)
            # 提取店铺名称
            店铺 = abs_file_path.split("\\")[-3]
            # 提取文件名前缀
            prefix = file.split("_")[0]
            # 根据前缀获取或生成新的编号
            # 映射_file_name = prefix_to_num[prefix]

            # 创建目标文件夹路径
            product_folder = os.path.join(destination_path, 店铺)
            target_folder = os.path.join(product_folder, prefix)

            # 如果目标文件夹不存在,创建它
            os.makedirs(target_folder, exist_ok=True)

            # 复制文件到目标文件夹
            shutil.copy(abs_file_path, target_folder)
            # shutil.move(abs_file_path, os.path.join(target_folder, file))

            # 打印结果
            print(f"已将 {abs_file_path} 移动到 {target_folder}")

总结

  • 希望对初学者有帮助

  • 致力于办公自动化的小小程序员一枚

  • 希望能得到大家的【一个免费关注】!感谢

  • 求个 🤞 关注 🤞

  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

  • 求个 ❤️ 喜欢 ❤️

  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

  • 求个 👍 收藏 👍

  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小庄-Python办公

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值