Python自制日常办公辅助工具之:各单位文件内指定文件批量复制到目标路径对应名称文件夹

Python自制日常办公辅助工具之指定文件类型复制

本人大学时期有一定的代码基础,但毕业这么多年几乎都快忘完了,从事的也是非技术行业。最近因为工作需要重新从零开始学习Python基础小知识,用于辅助日常办公。不足颇多,见笑之处还望包涵,个人博客也只是用于学习记录。

解决需求

将特定格式的文件批量复制到指定文件夹,例如JPG、PSD、MP4等视频图片文件。

本文以PSD为例,因日常工作涉及图片及视频文件的拷盘操作,而本地以单个节目为命名的文件夹内错综复杂。为此需要将本地路径1下面ABC文件夹内PSD文件,拷贝至硬盘路径2下面对应的ABC文件夹内,由于处理得是大批量内容,需要通过Python自动完成文件夹新建和文件复制工作

开发工具

Pycharm
Python3.9

软件的安装和Python的配置就不赘述了。

先贴代码

1.导入shutil,os,send2trash包
这边需要提前导入第三方库

2.在本地找个位置新建文件夹1,在1内新建好你需要拷贝的ABC节目名的文件夹。

3.定义要拷贝的本地节目名所在路径的变量。获取路径下数组dirnames,可以print检验一下

import shutil,os,send2trash

#1获取文件夹名称
path = r'E:\1'
pic_path = r'W:\竞视作图专用PSD模板\【PSD模板通用】'
print(os.listdir(path))
dirnames = [f for f in os.listdir(path) if os.path.isdir(path + '\\' + f)]
print(dirnames)

在这里插入图片描述

4.for循环
4.1 循环抓取文件夹1下的节目名,并在目的路径2中新建名字对应的文件夹。
4.2 定义变量为原路径下的节目文件夹路径。如:W:\竞视作图专用PSD模板\【PSD模板通用】\《电子竞技概论精选》
4.3.定义dirnames1为节目文件夹下的所有文件的数组。
4.4 循环嵌套,.定义变量filepath1为原路径下的节目文件夹内文件路径,endswith(‘.psd’)找到我们需要拷贝的文件类型。执行shuti.copy操作

5.检验
shutil.rmtree用于检验拷贝进度,防止出现中途报错导致混乱。即每完成一次拷贝工作,就将文件夹1内的对应名称文件夹删除。当文件夹1内的所有空的节目文件夹删除完毕时,也就意味拷贝已经全部完成。

for filenames in dirnames:
    # 取得文件或文件名的绝对路径

    target_path = os.path.abspath(r'E:\2'+ '\\' + filenames)
    if not os.path.exists(target_path):
     #如果目标路径不存在原文件夹的话就创建
     os.makedirs(target_path)
    # 判断是否为文件夹
 
    filepath = os.path.join(pic_path, filenames)
    dirnames1 = os.listdir(filepath)

    for filenames1 in  dirnames1:
     filepath1 = os.path.join(filepath,filenames1)

    # 判断是否为文件
     if os.path.isfile(filepath1):
        # 如果该文件的后缀为用户指定的格式,则把该文件复制到用户指定的目录
        if filepath1.endswith('.psd'):
             shutil.copy(filepath1,target_path)

    shutil.rmtree(r'E:\1' + '\\' + filenames)

运行测试

这里简单拷贝三个文件夹内的PSD文件,当然实际工作中会遇到成百上千的文件夹,可以使用bat脚本文件批量新建。
E:\1下的空文件夹仅供名称索取,拷贝文件则是在pic_path中对应的文件夹。即路径W:\竞视作图专用PSD模板\【PSD模板通用】
在这里插入图片描述
仅拷贝PSD文件。
在这里插入图片描述
拷贝至文件夹E\2
在这里插入图片描述
开始执行代码
在这里插入图片描述
E:\2 下已建好一致文件夹,并拷贝好对应的PSD文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

E:\1下已删除完毕,说明全部内容已拷贝完成。

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值