首页 > 编程语言 >使用Python复制某文件夹下子文件夹名为"数据"文件夹下的所有以"DD"开头的文件夹到桌面

使用Python复制某文件夹下子文件夹名为"数据"文件夹下的所有以"DD"开头的文件夹到桌面

时间:2023-05-18 20:11:38浏览次数:30  
标签:dirs target Python DD 文件夹 path root dir

大家好,我是皮皮。

一、前言

前几天在Python最强王者群【魏哥】问了一个Python自动化办公处理的问题,这里拿出来给大家分享下。

image.png

二、实现过程

这里他自己有一个原始代码,但是实现的效果不尽人意。

import shutil
import os

# import sys  # 导入sys模块
# sys.setrecursionlimit(1000)  # 将默认的递归深度修改为3000

def copy_file(path):
    # (root,dirs,files)分别为:遍历的文件夹,遍历的文件夹下的所有文件夹,遍历的文件夹下的所有文件
    for root, dirs, files in os.walk(path):
        for dir in dirs:
            if "数据" in dir:
                if "DD" in dir:  # 多了一层限定条件
                    shutil.copyfile(root + '\\' + dir, target_path + '\\' + dir)
                #     shutil.copytree(root + '\\' + dir, target_path + '\\' + dir)
                    print(root + '\\' + dir + ' 复制成功-> ' + target_path)
        for dir_in in dirs:
        # for dir_in in root:
            copy_file(dir_in)

if __name__ == '__main__':
    # 文件夹路径
    source_path = r'D:\供应链\订单&需求单\前传小站'
    # 输出路径
    target_path = r'C:\Users\pdcfi\Desktop\res'
    copy_file(source_path)

后来【eric】给了一个思路,如果一次性实现不行的话,那就分两次进行,拆分开来。思路是:第一次提取所有包含“数据”打头的文件夹,第二次,再针对获取到的“数据”的文件夹,再做一次代码处理,增加“DD”文件夹的筛选条件即可。

代码分别如下所示:第一次提取:

def copy_file(path):
    num = 1
    # (root,dirs,files)分别为:遍历的文件夹,遍历的文件夹下的所有文件夹,遍历的文件夹下的所有文件
    for root, dirs, files in os.walk(path):
        for dir in dirs:
            if "数据" in dir:
                shutil.copytree(root + '\\' + dir, target_path + '\\' + f"{dir}{num}")
            #     shutil.copytree(root + '\\' + dir, target_path + '\\' + dir)
                print(root + '\\' + dir + ' 复制成功-> ' + target_path)
                num += 1
        # for dir_in in dirs:
        # # for dir_in in root:
        #     copy_file(dir_in)

if name == 'main':
# 文件夹路径
source_path = r'D:\供应链'
# 输出路径
target_path = r'C:\Users\Desktop\res'
copy_file(source_path)

第二次提取:

def copy_file(path):
    # num = 1
    # (root,dirs,files)分别为:遍历的文件夹,遍历的文件夹下的所有文件夹,遍历的文件夹下的所有文件
    for root, dirs, files in os.walk(path):
        for dir in dirs:
            if "DD" in dir:
                shutil.copytree(root + '\\' + dir, target_path + '\\' + f"{dir}")
            #     shutil.copytree(root + '\\' + dir, target_path + '\\' + dir)
                print(root + '\\' + dir + ' 复制成功-> ' + target_path)
                # num += 1
        # for dir_in in dirs:
        # # for dir_in in root:
        #     copy_file(dir_in)

if name == 'main':
# 文件夹路径
source_path = r'C:\Users\Desktop\res'
# 输出路径
target_path = r'C:\Users\Desktop\DD'
copy_file(source_path)

顺利的解决了粉丝的问题:

image.png

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python自动化办公的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【魏哥】提问,感谢【eric】、【瑜亮老师】给出的思路和代码解析,感谢【冫马讠成】、【冷喵】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

标签:dirs,target,Python,DD,文件夹,path,root,dir
From: https://www.cnblogs.com/dcpeng/p/17413151.html

相关文章

  • Python的基础语法“四” 数据类型内置方法
    数据类型内置方法1.整型1.语法: int()2.作用: 将括号内数据转化为整型还可以进行进制转换2.1、我们常见的进制有哪些?#常见的进制数:二进制、八进制、十进制、十六进制(ABCDEF)#二进制和十进制之间转换#十进制转二进制:除2取余法#......
  • \033[0m 有什么用——python 输出颜色自定义
    "\033"是什么?\033或\33相当于python中的关键字,可以改变输出字体的属性,具体参考ECMA-48标准《ControlFunctionsforCodedCharacterSets》参数有什么?字颜色:30-----------3730:黑31:红32:绿33:黄34:蓝色35:紫色36:深绿37:白色字背景颜色范围:40----47......
  • python基础06
    练习#猜年龄的游戏#1.如果猜正确了,就直接结束程序#2.猜错的话,继续让它猜,给三次机会,三次全猜错,程序不要结束,问:是否继续猜,是,在给三次机会,否则退出'''先定义一个正确的值'''age=21count=0#计数器whileTrue:ifcount==3:j=input('三次机会用......
  • 【python】dumpall工具使用
    dumpall:一款信息泄漏利用工具,适用于.git/.svn/.DS_Store泄漏和目录列出  git地址:https://github.com/0xHJK/dumpall  安装使用:#unzipdumpall-master.zip#cddumpall-master#python37dumpall.py--version#查看版本#python37dumpall.py-uhttps:......
  • 2023最佳python编辑器和IDE
    IDE没有统一的标准,自己习惯就是最好的。本文列出一些较常用的IDE,供大家参考。一般而言,WingIDE、PyCharm、Spyder、Vim是比较常用的IDE。SpyderSpyder是Python(x,y)的作者为它开发的一个简单的集成开发环境。和其他的Python开发环境相比,它最大的优点就是模仿MATLAB的"工作空间"......
  • 领域驱动设计DDD架构解析和绘图模板分享
    DDD整洁架构DDD整洁架构为了解决强调用的关系,出现了洋葱架构(六边形)架构,就是为了实现依赖倒置它的思想就是把领域模型放到核心的位置,领域模型是独立的,不会直接强依赖其他层,而通过适配器来完成领域模型和外层的数据交换。DDD分层架构和三层架构的区别与关系DD分层架构和三......
  • 利用python解析log日志,json文件,配置文件。
    对于喜欢偷懒的我来说,重复同样的工作是很令人头疼的事情,总想找到一条捷径,最好是一劳永逸。本次跟大家分享的是对log日志,json文件以及配置文件的解析,读取。首先是log日志的读写:读取数据:f=open("spring05注意事项.txt",mode='r',encoding='utf-8')line=f.readline()whileline......
  • Python字符串替换的3种方法
    Python字符串替换笔记主要展示了如何在Python中替换字符串。Python中有以下几种替换字符串的方法,本文主要介绍前三种。replace方法(常用)translate方法re.sub方法字符串切片(根据Python字符串切片方法替换字符)1.replace方法Pythonreplace方法把字符串中的old(旧字符串)替换成......
  • 如何安装python
    在Linux和MacOS系统中,Python通常已经预装了,可以通过以下命令检查Python是否已经安装:python--version如果Python已经安装,则会显示Python的版本号。如果Python没有安装,则可以通过以下命令安装:在Ubuntu和Debian系统中,可以使用以下命令安装Python:sudoapt-getupdates......
  • 如何安装python
    在Linux和MacOS系统中,Python通常已经预装了,可以通过以下命令检查Python是否已经安装:python--version如果Python已经安装,则会显示Python的版本号。如果Python没有安装,则可以通过以下命令安装:在Ubuntu和Debian系统中,可以使用以下命令安装Python:sudoapt-getupdates......